2015-04-22 2 views
0
System.setProperty("javax.net.ssl.trustStore", "C:/tasks/MIP/Cert/ccc_acp.keystore"); 
System.setProperty("javax.net.ssl.trustStorePassword", "password"); 
System.setProperty("javax.net.debug", "ssl"); 

уже установил доверенные сертификаты, но когда HTTPS вызова, по-прежнему имеет ошибкуПолученного фатального предупреждения: handshake_failure, уже добавил доверенный

javax.net.ssl.SSLHandshakeException: Получена фатальное предупреждение: handshake_failure

сообщение вся ошибка очень долго, последняя часть сообщения об ошибке указана в следующей

главное, WRITE: TLSv1 Изменить Шифр ​​Spec, длина = 1
*** Закончено verify_data: {204, 151, 145, 147, 7, 73, 205, 158, 73, 238, 129, 8}


главное, WRITE: TLSv1 Рукопожатие, длина = 32
главное, READ: TLSv1 оповещения, длина = 2
главное, RECV TLSv1 ТРЕВОГА: со смертельным исходом, handshake_failure
главное, называется closeSocket()
главное, обработка Исключение: javax.net.ssl.SSLHandshakeException: Получено фатальное предупреждение: handshake_failure java.lang . Исключение:; вложенное исключение: javax.net.ssl.SSLHandshakeException: Получен фатальным предупреждение: handshake_failure

+1

Каков пакет cypher, который вы отправляете на сервер, возможно ли, что вы и сервер не будете делиться/соглашаться на общий chyper для продолжения связи. Вы можете посмотреть сертификат сервера, чтобы увидеть поддерживаемые cyphers, и сравнить с тем, как вы отправляете –

ответ

0

Не знаю, что причина, но если изменить SetProperty из доверенных в KeyStore, работа программы !!

System.setProperty("javax.net.ssl.keyStore", "C:/tasks/MIP/Cert/ccc_acp.keystore"); 
System.setProperty("javax.net.ssl.keyStorePassword", "password"); 

Я не знаком с SSL, в Goolge, я нахожу KeyStore используется только для сервера, но мое приложение является клиентом для вызова API сервера, так что не знаю, почему изменения в KeyStore и это будет успех сейчас, кто-нибудь может объяснить?

Для получения дополнительной информации, я обнаружил, что если я удалю все System.setProperty (...), а затем в консоли, я вижу KeyStore пусто, но не доверенные сертификаты, следующим образом:

хранилищу ключи :
типа KeyStore является: JKS
поставщика хранилища ключей:
инициализации хранилище ключи
INIT KeyManager типа SunX509
является доверенным хранилищем: C: \ Program Files \ Java \ jre6 \ Lib \ безопасность \ cacerts
trustStor е типа: JKS
поставщик является доверенным хранилищем:
INIT

доверенного

почему KeyStore пуста?

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