【发布时间】:2011-02-23 01:01:25
【问题描述】:
这似乎是一个标准问题,但我在任何地方都找不到明确的方向。
我有 java 代码试图连接到可能带有自签名(或过期)证书的服务器。代码报如下错误:
[HttpMethodDirector] I/O exception (javax.net.ssl.SSLHandshakeException) caught
when processing request: sun.security.validator.ValidatorException: PKIX path
building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
据我了解,我必须使用 keytool 并告诉 java 允许此连接是可以的。
解决此问题的所有说明均假设我完全精通 keytool,例如
为服务器生成私钥并将其导入密钥库
有没有人可以发布详细的说明?
我正在运行 unix,所以最好使用 bash 脚本。
不确定是否重要,但代码在 jboss 中执行。
【问题讨论】:
-
见How do I accept a self-signed certificate with a Java HttpsURLConnection?。显然,如果你能让网站使用有效的证书会更好。
-
感谢链接,搜索时没看到。但是那里的两种解决方案都涉及发送请求的特殊代码,我正在使用现有代码(用于 java 的亚马逊 ws 客户端)。分别,我连接的是他们的网站,我无法解决其证书问题。
-
@MatthewFlaschen - “显然,如果你能让网站使用有效证书会更好......” - 自签名证书是有效证书,如果客户信任它。许多人认为授予 CA/浏览器卡特尔信任是一个安全缺陷。
-
相关,请参阅The most dangerous code in the world: validating SSL certificates in non-browser software。 (提供该链接是因为您似乎收到了禁用验证的垃圾邮件答案)。