Java HttpsURLConnection SSLHandshakeException - PullRequest
2 голосов
/ 11 июля 2011

Я пытаюсь установить HTTPS-соединение с веб-сайтом, используя HttpsURLConnection, а затем выполнить запрос PUT.Когда я пытаюсь создать OutputStreamWriter из 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

Страница только что получила свой сертификат (выданный StartCom) - нужно ли что-то делать вручную, чтобызаставить Java распознать сертификат присутствует сейчас?Я могу без проблем подключаться к другим страницам того же сайта, но у них другой сертификат.

Ответы [ 2 ]

5 голосов
/ 11 июля 2011

Вы можете импортировать корневой сертификат StartCom и инструмента keytool (из JDK) в хранилище ключей Java (JKS), а затем установить хранилище ключей как «доверенное хранилище».

См. Раздел «Экспорт и импорт сертификатов» на:

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

Команды, упомянутые в этой статье:

Импортировать сертификат вrustcerts.jks:

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");
0 голосов
/ 01 июня 2012

Также смотрите этот вопрос: Импорт сертификатов StartCom CA в Windows JRE

Он ссылается на скрипт для импорта сертификатов StartCom в доверенное хранилище JDK.

...