2011-07-11 64 views
2

我試圖使用HttpsURLConnection與網站進行HTTPS連接,然後執行PUT請求。當我嘗試從HttpsURLConnection.getOutputStream()OutputStreamWriter,以下異常被拋出:Java HttpsURLConnection SSLHandshakeException

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識別證書現在呢?我可以毫不費力地連接到同一網站的其他頁面,但他們擁有不同的證書。

回答

5

您可以將StartCom yia工具keytool(來自JDK)的根證書導入Java密鑰庫(JKS),然後將密鑰庫設置爲「可信存儲區」。

見 「導入和導出證書」 上:

導入certifificate到trustedcerts.jks:該文章中提到的

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

命令

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

開始使用Java定製tuststore:

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

您也可以在運行時設置的信任:

System.setProperty("javax.net.ssl.trustStore","./trustedcerts.jks"); 
+1

謝謝 - 對於有同樣問題的其他人,我在本地保存證書,使用'keytool -import ...'命令並添加了'System.setProperty(「javax.net.ssl.trustStore」,「path_to_keystore」 );'我的代碼。 – caroline

+1

我將不同的命令複製到我的答案中。 – Robert