【发布时间】:2013-11-11 14:54:40
【问题描述】:
我有一个 Javafx 应用程序,它通过 HTTPS 将 GET 和 POST 请求发送到安全的 Web 服务。托管 web 服务的服务器上的 SSL 设置是单向 ssl,即 Javafx 应用程序验证服务器的身份,但服务器不验证胖客户端的身份。
应用程序服务器位于具有证书(由外部机构签署)的 F5 后面。
对于浏览器来说,这不是问题,因为浏览器本身会处理验证服务器的身份并向用户显示相关警告。但是对于胖客户端,我不确定在发送请求之前如何验证服务器的身份。请让我知道如何在 Javafx 应用程序中处理此问题。
我之前确实问过一个与此相关的问题 here 和 here,但这些都没有帮助。所以,请原谅我对这个话题的了解有限。
任何帮助将不胜感激。
【问题讨论】:
-
如果服务器证书由已知(到您的 java 版本)CA 和 valid 颁发(它包括各个方面:PKIX 链、不早于 - 不晚于的日期、CN、扩展、等)一切都应该在没有任何额外代码的情况下工作。普通的 HttpsUrlConnection 就可以了。
-
并且 HttpsUrl 连接会检查所有内容,因此您无法通过 https 协议连接到证书无效的站点。事实上,如果你有旧的 java 版本和旧的根 CA 证书,你甚至无法连接到具有有效证书的站点,而是用新的 CA 颁发的,因为 java 在其内部密钥库中没有它。
-
如果你想了解更多关于 ssl/https 以及它是如何工作的,我推荐这篇文章zytrax.com/tech/survival/ssl.html
-
非常感谢user1516873的回复。我希望对具有有效证书的服务器进行这项工作,但不知何故我收到了与 PKIX 相关的异常。所以,我最终忽略了here 和here 中描述的所有证书。 :)
-
当然您可以完全禁用验证,但我强烈建议您不要这样做。当服务器使用自签名或无效证书时,通常会出现与 PKIX 相关的问题。你说的服务器证书是外部权威机构颁发的,你可以用浏览器访问服务器吗?
标签: java ssl https javafx-2 f5