Android + Verisign SSL версия 1 - PullRequest
       37

Android + Verisign SSL версия 1

1 голос
/ 27 февраля 2012

У меня следующая проблема: я использую сертификат Verisign SSL и пытаюсь подключиться из приложения для Android к своему серверу tomcat 7.На мой взгляд, сертификат установлен правильно, так как я могу успешно подключиться с помощью того же приложения для iphone, браузера Firefox и ssl-инструмента verisign и других инструментов проверки ssl.

Но приложение для Android сообщает: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Version 1 certs can't be used as intermediate certificates

Я пытаюсь изменить порядок сертификатов, как описано во многих ответах, и реализовал решение с помощью EasySSLSocketFactory иEasyX509TrustManager но я не смог разрешить исключение.Сертификат Версии 1 заказан как последний, поэтому у меня есть [0]-my cert, [1]-intermediate1, [2]-intermediate2 and finally [3]-the root Version 1.Я не хочу разрешать все сертификаты по соображениям безопасности.Я не уверен, почему выбрасывается это исключение, но кажется, что либо Verisign выдает неправильный корневой сертификат, либо Android не реализовал корень в своем хранилище доверенных сертификатов.Как это можно решить?Большое спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 21 января 2015

У меня была именно эта проблема, и мне удалось ее решить вчера. Вы правы в том, что корневой сертификат не принят, так как это сертификат версии 1.

Я решил проблему, сначала выяснив, какой сертификат в цепочке сертификатов был сертификатом версии 1 (который вызывает ошибку), с помощью openssl.

simonevertsson$ openssl s_client -connect my.secure.site.com:443

Это дает цепочку сертификатов. Пример:

---
Certificate chain
 0 s:/C=SE/ST=Uppsala/L=Uppsala/O=Example AB/CN=my.secure.site.com
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
 1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
 2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
 3 s:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---

Затем я перешел на страницу загрузки корневого сертификата VeriSign и вручную загрузил .pem-файл для сертификата версии 1, которым в моем случае был публичный первичный центр сертификации класса 3.

Когда файл сертификата был загружен, я просто следовал руководству Android Developer на Добавление неизвестных CA . И вот так ошибка исчезла.

0 голосов
/ 10 июля 2013

Убедитесь, что на веб-сервере / сервере приложений установлен только один сертификат. Удалить все просроченные сертификаты.

...