尝试连接远程服务器时,我面临以下SSL
连接exception
:
java.net.SocketException: Default SSL context init failed: null
大多数帖子都表明包含keystore
文件的certificate
位置存在问题。
其他人喜欢这篇帖子:Default SSL context init failed: null建议自己创建SSL Context
。但是,问题还没有解决。
以下是我到目前为止所做的事情:
我尝试将certificate
添加到以下文件位置,所有这些都给了我前面提到的相同错误:
•Cacerts
中的Java Home
文件。
•我正在使用的cacerts
的默认IDE
位置(JDveloper 10.1.3.2
),就我而言:C:\JDeveloper\WorkSpace_10g\jdevstudio10132\jdk\jre\lib\security\cacerts
•仅包含此keystore
的新certificate
。
使用certificated
小程序添加Portecle
(我还尝试了keytool
中的Command prompts
个选项)
我还在代码中指代trustStore
和keyStore
,如下所示:
System.setProperty("javax.net.ssl.trustStore", trustStore file path goes here);
System.setProperty("javax.net.ssl.trustStorePassword", password goes here);
System.setProperty("javax.net.ssl.keyStore", keyStore file path goes here);
System.setProperty("javax.net.ssl.keyStorePassword", password goes here);
在上面的代码中,file path
引用了前面提到的cacerts
文件(Java home
,默认JDeveloper
cacerts
和新创建的keystore
当然我分别尝试了每一个。
答案 0 :(得分:1)
找不到密钥库。检查您是否可以使用javax.net.ssl.keyStore.
如果您使用的是默认cacerts
,则根本不需要设置javax.net.ssl.trustStore/trustStorePassword
。