Java HttpsURLConnection SSLHandshakeException

car*_*ine 2 java https http-put sslhandshakeexception

我试图使用HttpsURLConnection,然后执行PUT请求与网站建立HTTPS连接.当我尝试创建OutputStreamWriterfrom时HttpsURLConnection.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
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*ert 5

您可以将StartCom yia的根证书从工具keytool(从JDK)导入Java密钥库(JKS),然后将密钥库设置为"可信存储".

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

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

该文章中提到的命令:

将certifificate导入trustedcerts.jks:

keytool -import -keystore trustedcerts.jks -alias qusay -file server.crt
Run Code Online (Sandbox Code Playgroud)

使用自定义tuststore启动Java:

java -Djavax.net.ssl.trustStore=trustedcerts.jks com.example.MyClass
Run Code Online (Sandbox Code Playgroud)

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

System.setProperty("javax.net.ssl.trustStore","./trustedcerts.jks");
Run Code Online (Sandbox Code Playgroud)