Android 2.2 SSL Ошибка с клиентским сертификатом?

Мой вопрос:

Кто-нибудь успешно аутентифицировал 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 без ответа

SSL-не-рабочего на андроид-2-2-только-в-2-3Android-2-2-SSL-библиотека ошибок, Последний комментарий Николая Еленкова в единственном ответе, похоже, указывает на тот же вывод, что и я, но я не могу найти никаких документов, подтверждающих это.

Ответы на вопрос(1)

Ваш ответ на вопрос