Android-эмулятор "Chain Validation Failed" подключился к разработчику с самоподписанным сертификатом

У меня есть проект Android Studio, который вызывает веб-службу API. Когда сервисный код находится в dev, qa, prod и т.д. Никаких проблем с сертификатами нет, но при попытке открыть окно разработчиков веб-API для тестирования новой функции/исправления ошибки/и т.д. я получаю:

Нет ответа из-за ошибки:

javax.net.ssl.SSLHandshakeException: проверка цепочки не удалась

на com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)

У меня был самозаверяющий сертификат, экспортированный с машины разработчиков сервисов БЕЗ закодированного DER ключа. Я упал на эмулятор, и он "установлен", но это не сработало.

Я взял тот же сертификат выше и скопировал на эмулируемую SD-карту. Затем устанавливается из настроек безопасности в эмуляторе. Тот же результат. Проверка цепочки не удалась.

Теперь мои знания по безопасности/сертификатам очень просты. Я думаю, что ошибка на самом деле описывает проблему. В самозаверяющем сертификате нет цепочки... но я могу ошибаться.

Независимо от того, как мне обойти это?

Я хочу иметь возможность запускать свой код Android и устанавливать флажки для разработчиков для тестирования/отладки и т.д.

Я прочитал этот пост только для того, чтобы иметь корпоративную среду, в которой я блокирую сайты для открытого SSL и т.д.

https://android.stackexchange.com/info/61540/self-signed-certificate-install-claims-success-but-android-acts-as-if-cert-isn

Я получаю доступ к сервису через WebView.

Ответ 1

Причиной этой проблемы может быть неправильная дата и время устройства

Ответ 2

Я получал

javax.net.ssl.SSLHandshakeException: Chain validation failed

и

java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date

решение, которое работало для меня, заключалось в том, чтобы заставить холодную загрузку эмулятора через Диспетчер виртуальных устройств → Выпадающее меню Actions → Cold Boot Now

Ответ 3

Просто перезагрузка эмулятора решила эту ошибку. Длительно нажмите кнопку выключения питания в меню эмулятора и выберите "Перезагрузка".

Ответ 4

холодная загрузка работала нормально для меня. Большое спасибо !!

Ответ 5

Я стер все данные с эмулятора и снова загрузил его, установил приложение и все работало. Но видел другое решение, я думаю, что теперь это может быть излишним.

Ответ 6

Я знаю, что это старый вопрос, но у меня была похожая проблема с совершенно другим решением.

Убедитесь, что ваш SSL не истек. После того, как я исправил эту проблему, я больше не получал ошибки "javax.net.ssl.SSLHandshakeException: Chain validation fail". У меня были другие проблемы, но это другая тема.

Это звучит как такое очевидное решение, но это то, на что нужно обратить внимание, и это не обязательно первое, что приходит на ум людям.