我有一個pkcs12文件。我需要使用它來使用https協議連接到網頁。我碰到一些代碼,其中,以連接到安全的網頁我需要設置下面的系統屬性:如何使用pkcs12文件在Java中使用SSL連接到安全網站?
System.setProperty("javax.net.ssl.trustStore", "myTrustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", "new_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "newpass");
我有P12(PKCS12)的文件。我需要的只是一個信任庫文件。
我提取的證書中使用:
openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts
現在轉換的證書PEM文件爲DER
openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der
現在添加DER文件密鑰庫查閱
keytool -import -file C:/Cacert.der -keystore mytruststore
我有信任庫,但是當我使用它時,出現以下錯誤
Exception in thread "main" java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
更新: 刪除某些屬性和唯一設置 「的trustStore」 後, 「trustStorePassword」 和 「trustStoreType」 屬性,我得到了以下異常
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
請幫助。
如果您可以發佈更多的堆棧跟蹤(來自堆棧幀的信息,而不僅僅是異常消息),我會查看它。 – erickson 2009-02-12 15:38:13
要檢查的另一件事是您的信任存儲位置正確指定;如果指定了javax.net.ssl.trustStore但不存在,則會立即創建一個空的信任庫。你的新錯誤信息使得它聽起來像這可能發生。 – erickson 2009-02-12 15:52:46