2012-06-06 3 views
3

У меня есть проблемы со следующим кодом ...javax.net.ssl.SSLException: SSLSocketFactory является нулевым

System.setProperty("javax.net.ssl.keyStoreType", "pkcs12"); 
System.setProperty("javax.net.ssl.trustStoreType", "jks"); 
System.setProperty("javax.net.ssl.keyStore","C:\\ClientKeyStore\\ClientKeyStore.p12"); 
System.setProperty("javax.net.ssl.trustStore","C:\\ClientKeyStore\\ClientKeyStore.keystore"); 
System.setProperty("javax.net.debug", "ssl"); 
System.setProperty("javax.net.ssl.keyStorePassword", "keystorepass"); 
System.setProperty("javax.net.ssl.trustStorePassword", "truststorepass"); 

SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
URL url = new URL("https://url.com"); 
HttpsURLConnection httpCon = (HttpsURLConnection) url.openConnection(); 
httpCon.setSSLSocketFactory(sslsocketfactory); 
OutputStream out=httpCon.getOutputStream(); 

Я попытался установить доверие магазин, хранилище ключей и другие свойства контекста SSL с помощью System.setProperty(key,value) метод, но я получаю следующую ошибку.

javax.net.ssl.SSLException: SSLSocketFactory is null. This can occur if javax.net.ssl.SSLSocketFactory.getDefault() is called to create a socket and javax.net.ssl.* properties are not set. 

Не могли бы помочь мне с этой проблемой.

+0

Какой код/​​настройки вы используете для этого? – Bruno

+0

@Bruno: Проверьте код сейчас. Я редактировал сообщение. –

+0

Вы ранее называли 'SSLSocketFactory.getDefault()' до того, как были установлены свойства? – EJP

ответ

1

Вы можете попробовать слэша для дорожек даже на окнах:

System.setProperty("javax.net.ssl.keyStoreType", "pkcs12"); 
System.setProperty("javax.net.ssl.trustStoreType", "jks"); 
System.setProperty("javax.net.ssl.keyStore","C:/ClientKeyStore/ClientKeyStore.p12"); 
System.setProperty("javax.net.ssl.trustStore","C:/ClientKeyStore/ClientKeyStore.keystore"); 
System.setProperty("javax.net.debug", "ssl"); 
System.setProperty("javax.net.ssl.keyStorePassword", "keystorepass"); 
System.setProperty("javax.net.ssl.trustStorePassword", "truststorepass"); 


SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 

Это все ваш код? Ваши свойства выглядят прекрасно, и я смог использовать ваш пример для создания фабрики сокетов.

+0

Я немного изменил код. У меня нет проблем с настройкой свойств, но даже если я установил свойства, объект SSLSocketFactory останется равным нулю. Есть ли что-нибудь, что я могу сделать на стороне сервера или в моих локальных системных настройках. –

Смежные вопросы