HTTPS с самозаверяющим сертификатом выдает ошибку рукопожатия - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь подключиться к веб-серверу HTTPS через Android HttpClient с самозаверяющими сертификатами клиента и сервера. Сертификаты и закрытый ключ хранятся в хранилище ключей PKCS # 12.

Я использую этот пример с разницей в загрузке хранилища ключей:

KeyStore trustStore = KeyStore.getInstance("PKCS12");
trustStore.load(new FileInputStream(keystoreFile), "mypass".toCharArray());

Хранилище ключей загружается правильно, так как я могу перечислить все сертификаты в нем.

Но при выполнении запроса GET я получаю:

09-07 22:01:05.197: ERROR/TTT(3716): IOException: java.io.IOException: 
SSL handshake failure: Failure in SSL library, usually a protocol error
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 
(external/openssl/ssl/s3_pkt.c:1127 0x2e3b40:0x00000003)

Я тестирую это на Nexus S с ОС 2.3.4 и HTC Desire с ОС 2.2, а также эмулятор с ОС 2.1. Все они выдают одну и ту же ошибку. Я посмотрел на s3_pkt.c: 1053 , но не мог понять, в чем проблема.

Есть идеи?

1 Ответ

2 голосов
/ 08 сентября 2011
trustStore.load(new FileInputStream(keystoreFile), "mypass".toCharArray());

Вы, кажется, перепутали хранилище ключей и хранилище доверенных сертификатов.Хранилище ключей содержит ваш закрытый ключ и сертификат.Склад доверенных сертификатов содержит сертификаты других людей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...