Мой вопрос:Ошибка Android 2.2 SSL с сертификатом клиента?
Кто-нибудь успешно прошел проверку подлинности соединения SSL с сертификатом клиента в Android 2.1/2.2 с несколькими CERT цепи?
Детали:
Я пытаюсь выполнить проверку подлинности сертификата клиента для 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-not-working-on-android-2-2-only-in-2-3
- android-2-2-ssl-library-error. Последний комментарий Николая Еленкова в единственном ответе, похоже, указывает на тот же вывод, который у меня есть, но я не могу найти документацию, подтверждающую его.
В моем случае у меня есть самозаверяющий сертификат ... Так что я потерялся? – CelinHC