2

我正在尝试使用 HTTPS 连接到网站HttpsURLConnection,然后执行 PUT 请求。当我尝试创建OutputStreamWriterfromHttpsURLConnection.getOutputStream()时,会引发以下异常:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target

该页面刚刚获得其证书(由 StartCom 颁发) - 我是否需要手动执行某些操作以使 Java 识别该证书现在存在?我可以毫无困难地连接到同一网站的其他页面,但它们的证书不同。

4

2 回答 2

5

您可以使用工具 keytool(来自 JDK)将 StartCom 的根证书导入 Java 密钥库(JKS),然后将密钥库设置为“受信任的存储”。

请参阅“导出和导入证书”部分:

http://java.sun.com/developer/technicalArticles/Security/secureinternet2/

那篇文章中提到的命令:

将证书导入到trustedcerts.jks:

keytool -import -keystore trustedcerts.jks -alias qusay -file server.crt

使用自定义 tuststore 启动 Java:

java -Djavax.net.ssl.trustStore=trustedcerts.jks com.example.MyClass

或者,您可以在运行时设置信任库:

System.setProperty("javax.net.ssl.trustStore","./trustedcerts.jks");
于 2011-07-11T08:58:59.370 回答
0

另请参阅此问题:在 Windows JRE 中导入 StartCom CA 证书

它链接到一个脚本,用于将 StartCom 证书导入您的 JDK 可信存储。

于 2012-06-01T11:10:16.997 回答