Android 2.2 SSL Ошибка с клиентским сертификатом? - PullRequest
0 голосов
/ 02 марта 2012

Мой вопрос:

Кто-нибудь успешно аутентифицировал SSL-соединение с клиентским сертификатом в Android 2.1 / 2.2 с несколькими цепочками сертификатов?

Подробности:

Я пытаюсь реализовать проверку подлинности сертификата клиента для платформы Android.В StackOverflow уже много дискуссий о том, как это сделать с помощью KeyStore, и я следую стандартному подходу, предоставляя их в SSLContext.

context.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers() ,null);

К моему клиентскому сертификату прикреплено 3 сертификата, образующих цепочку сертификатов.В Android 2.3+ SSL-рукопожатие успешно выполнено, и я мог бы продолжить с запросом.

Однако в Android 2.2 тот же подход выкинул бы «неверную ошибку сертификата»

error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate (external/openssl/ssl/s3_pkt.c:1139 0x26bd38:0x00000003)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:316)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.(OpenSSLSocketImpl.java:564)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getOutputStream(OpenSSLSocketImpl.java:479)

Это та же ошибка, если я ввожу команду OpenSSL с неполной цепочкой сертификатов в аргументе CAfile:

openssl s_client -showcerts -cert [certificateFile] -key [keyFile] -connect [ip:port] -CAfile [cert-chain]

, что заставляет меня поверить, что Android 2.1 / 2.2 не проверяет полную цепочку.Чтобы убедиться, что я проверю номер цепочки в KeyStore, используя метод getCertificateChain().

Я искал ошибку в Android, связанную с моим вопросом, но не нашел ее.Подобные вопросы были опубликованы в SO без ответа

1 Ответ

1 голос
/ 03 марта 2012

Это кажется действительно ошибкой в ​​Android 2.1 / 2.2.

Я попросил нашего администратора создать еще один клиентский сертификат, который выдается непосредственно корневым центром сертификации.Получив этот сертификат, я поместил его в качестве ресурса в коде, и он работает без каких-либо изменений, за исключением того, что KeyStore указывает на новый сертификат.

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