Android chain validation failed

javax.net.ssl.SSLHandshakeException: Chain validation failed #3180

Comments

cnsilvan commented Feb 22, 2017

This error occurs only in Android Nougat and above when use self-signed certificate。

The text was updated successfully, but these errors were encountered:

cnsilvan commented Feb 22, 2017

targetSdkVersion 22
compileSdkVersion 25

unext-wendong commented Jul 12, 2017

Can someone explain the reason why this issue was closed? Was it fixed? Or it’s not a valid issue (why)?

unext-wendong commented Jul 12, 2017

We see this issue on Android 7.0 with the latest version 3.8.1.

It happens only in the first time when we try to make a https post request after device bootups.
After that, it just works fine.

gitcarlosandrade commented Jul 12, 2017 •

I have the same issue on android emulator with API 26

OkHttp version: 3.8.0
targetSdkVersion: 25
compileSdkVersion: 25

With api 22 the request works!

unext-wendong commented Jul 19, 2017

Is anyone monitoring this? It’ll be nice if someone makes a comment.

swankjesse commented Jul 19, 2017

Creating an executable test case is the best way to get something fixed.

unext-wendong commented Jul 19, 2017

When trying to implement a test case, I found out the possible cause for my issue.

The device I’m using always resets its system time to a fixed time in the past when booting up, and updates the time to the current time shortly after. The certificate verification fails if the https request is made before the system time is updated.

Not related to okhttp. Should have found this before coming to here. Sorry for the trouble.

cnsilvan commented Aug 23, 2017

Not related to okhttp.

maoqis commented Nov 27, 2017

FabianTerhorst commented Jan 4, 2018

I can reproduce it 100% with an xiaomi mi a1. On nexus 9, 10, 6p, pixel, essential ph1 works.

scottkruse commented Mar 14, 2018

I can reproduce anytime i set my system clock into the future (testing 1 month ahead of the current time)

yschimke commented Mar 15, 2018

@scottkruse so SSL and faking time don’t mix well. e.g. let’s encrypt use certificates for 90 days, so many popular sites will issue certificates that have expired in the next month.

RangerAnan commented Apr 13, 2018

It works for me,thank you

leizGit commented May 21, 2019

When trying to implement a test case, I found out the possible cause for my issue.

The device I’m using always resets its system time to a fixed time in the past when booting up, and updates the time to the current time shortly after. The certificate verification fails if the https request is made before the system time is updated.

Not related to okhttp. Should have found this before coming to here. Sorry for the trouble.

Did it not work at the wrong time? How to fix it?

unext-wendong commented May 21, 2019

Did it not work at the wrong time? How to fix it?

If the system time is set to time point at which the server certificate is not valid, https will fail.

Читайте также:  Алхимия для android от android

We fixed it by waiting for system time to be updated before making any https requests.

Minhalatgit commented Jul 23, 2020

I fixed it by just changing the api’s base url from «https» to «http»

LetsHandOutOurMastery commented Oct 5, 2021

I tried the above solutions but still its not working for me. Whenever Im trying to save data in aws amplify datastore, im receiving this exception.

Источник

Ошибка SSL-соединения на действительном сертификате

Я получил javax.net.ssl.SSLHandshakeException: Chain validation failed , когда я пытаюсь подключиться к своему API-серверу, сертификат действителен в настоящее время, и в трассировке стека я получил Caused by: java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date , сертификат действителен, и он работает над iOS и на сайте проблема только в Android.

Я использую Retrofit, вот поколение clitent

И полный след это

Обновление 1: если я захожу на веб-страницу из Chrome на телефоне, она работает, но приложение все еще не работает.

2 ответа

Глядя на строку Suppressed: java.security.cert.CertPathValidatorException: Could not determine revocation status , можно предположить, что сбой происходит на этапе проверки отзыва, который основан на протоколе OCSP.

Здесь может произойти то, что ваше устройство не подключено к Интернету и не может связаться с сервером авторизации, чтобы проверить действительность вашего сертификата (это только предположение).

Если вы не хотите, чтобы ваше приложение имело доступ к серверу авторизации, вы должны активировать «OCSP stappling» на вашем сервере. Это означает, что ваш сервер будет отправлять квитанцию проверки OCSP, а также сертификат.

В моем случае достаточно было просто установить правильное системное время на устройстве («Настройки»> «Система»> «Дата и время»> «Автоматическая дата и время»).

Источник

Android Emulator «Chain Validation Failed» подключение машины разработчиков с самозаверяющим сертификатом

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

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

в com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361) году

У меня был самозаверяющий сертификат, экспортированный с машины разработчиков служб WITHOUT, закодированный закрытый ключ DER. Я упал на эмулятор, и он «installed», но это не сработало.

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

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

Как бы то ни было, как мне обойти это?

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

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

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

6 ответов

Я хочу знать разницу между самозаверяющим сертификатом и сертификатом, сгенерированным центром сертификации. Я могу легко создать самозаверяющий сертификат для домена xyz.com, тогда в чем разница между этим сертификатом и сертификатом, сгенерированным CA? Сценарий Предположим, что сайт xyz.com.

У меня есть веб-сервер, который совместно использует репозитории mercurial. Он делится проектами в HTTPS с самозаверяющим сертификатом. Если я хочу клонировать репозиторий, я могу использовать команду (обратите внимание на опцию —insecure, которая говорит, чтобы не беспокоиться о сертификате). hg.

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

решение, которое сработало для меня, состояло в том, чтобы заставить cold boot эмулятор через Диспетчер виртуальных устройств -> Раскрывающийся список действий -> Cold Boot Сейчас

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

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

Я проверил время и дату, перезапустил свой эмулятор, даже свой mac, очевидно, по моему делу

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

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

Читайте также:  Внешние источники настройки андроид

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

Убедитесь, что ваш SSL не истек. Как только я исправил эту проблему, я больше не получал ошибок «javax.net.ssl.SSLHandshakeException: проверка цепочки не удалась». У меня были и другие проблемы, но это уже другая тема.

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

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

Похожие вопросы:

у коллеги возникла проблема с подключением к серверу SSL с помощью его собственного разработанного приложения. Я настроил свою машину Tomcat с самозаверяющим сертификатом (.pem), и соединение через.

Я должен подключить свое приложение iPhone к серверу с самозаверяющим сертификатом через HTTPS. Я не могу изменить сертификат или сервер. Поскольку я не хочу принимать все самозаверяющие.

Когда я пытаюсь подключиться к URL с самозаверяющим сертификатом, Java не позволяет мне этого сделать. В моей ситуации я не могу использовать custom SSL socket factory без проверки сертификата.

Я хочу знать разницу между самозаверяющим сертификатом и сертификатом, сгенерированным центром сертификации. Я могу легко создать самозаверяющий сертификат для домена xyz.com, тогда в чем разница.

У меня есть веб-сервер, который совместно использует репозитории mercurial. Он делится проектами в HTTPS с самозаверяющим сертификатом. Если я хочу клонировать репозиторий, я могу использовать.

Можно ли запустить веб-сервер Amazon Beanstalk в режиме SSL с Самозаверяющим сертификатом?

Я пишу приложение Android, которое требует сертификации SSL для определенных веб-запросов. Мне нужно создать файл PKCS12 ( .pfx ) с Самозаверяющим сертификатом. Я решил использовать библиотеку.

У меня есть сервер с самозаверяющим сертификатом . Я хочу подключить свое устройство к серверу с помощью формы https . Я слышал, что должен просто принять эту связь . Но я не знаю как . У меня есть.

Совершенно новый с Dropwizard. Я нашел много решений для работы с самозаверяющим сертификатом Jersey и ssl. Версия Dropwizard — 0.9.2 Я пытался установить SSLContext, но я получаю The method.

Я бы хотел обойти проверку сертификатов, используя Alamofire 5 и Swift 4. Я использую Alamofire для подключения к серверу с самозаверяющим сертификатом. Это похоже на этот вопрос Alamofire с.

Источник

SSLHandshakeException: Chain validation failed #225

Comments

Mr-Anonymous commented Mar 5, 2019 •

Problem

SSL Handshake is failing. When a file is uploaded to the server, I am getting the error: W/FileTransfer: Error getting HTTP status code from connection. javax.net.ssl.SSLHandshakeException: Chain validation failed

What is expected to happen?

The SSL is valid until April 2019. The SSL is generated by Let’s Encrypt Authority X3. Chrome or other browsers does not have this error. So the upload should work since the SSL is valid and TLS v1.2 is enabled.

What does actually happen?

If I upload from ionic mobile app using the native XHR method, it works. If I upload using the File Transfer plugin, the SSL Handshake fails. Particularly, it appears users with Android phones are having this issue.

Information

I did a scan using ssllabs.com and the only 2 things I found in that are:

OCSP STAPLING ERROR: OCSP response expired on Mon Mar 04 16:00:00 UTC 2019

TLS 1.1 and TLS 1.0 is not enabled. I am not sure if we need that since most of the users who have reported this uses Android 8+.

Can any of the above cause this SSL Handshake issue? Can an expired OCSP stapling cause this handshake error on uploads in File Transfer plugin?

Environment, Platform, Device

Version information

The text was updated successfully, but these errors were encountered:

Источник

Android Emulator «Chain Validation Failed» подключение машины разработчиков с самозаверяющим сертификатом

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

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

в com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361) году

У меня был самозаверяющий сертификат, экспортированный с машины разработчиков служб WITHOUT, закодированный закрытый ключ DER. Я упал на эмулятор, и он «installed», но это не сработало.

Читайте также:  Покажи все самсунги андроиды

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

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

Как бы то ни было, как мне обойти это?

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

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

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

6 ответов

Я хочу знать разницу между самозаверяющим сертификатом и сертификатом, сгенерированным центром сертификации. Я могу легко создать самозаверяющий сертификат для домена xyz.com, тогда в чем разница между этим сертификатом и сертификатом, сгенерированным CA? Сценарий Предположим, что сайт xyz.com.

У меня есть веб-сервер, который совместно использует репозитории mercurial. Он делится проектами в HTTPS с самозаверяющим сертификатом. Если я хочу клонировать репозиторий, я могу использовать команду (обратите внимание на опцию —insecure, которая говорит, чтобы не беспокоиться о сертификате). hg.

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

решение, которое сработало для меня, состояло в том, чтобы заставить cold boot эмулятор через Диспетчер виртуальных устройств -> Раскрывающийся список действий -> Cold Boot Сейчас

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

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

Я проверил время и дату, перезапустил свой эмулятор, даже свой mac, очевидно, по моему делу

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

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

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

Убедитесь, что ваш SSL не истек. Как только я исправил эту проблему, я больше не получал ошибок «javax.net.ssl.SSLHandshakeException: проверка цепочки не удалась». У меня были и другие проблемы, но это уже другая тема.

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

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

Похожие вопросы:

у коллеги возникла проблема с подключением к серверу SSL с помощью его собственного разработанного приложения. Я настроил свою машину Tomcat с самозаверяющим сертификатом (.pem), и соединение через.

Я должен подключить свое приложение iPhone к серверу с самозаверяющим сертификатом через HTTPS. Я не могу изменить сертификат или сервер. Поскольку я не хочу принимать все самозаверяющие.

Когда я пытаюсь подключиться к URL с самозаверяющим сертификатом, Java не позволяет мне этого сделать. В моей ситуации я не могу использовать custom SSL socket factory без проверки сертификата.

Я хочу знать разницу между самозаверяющим сертификатом и сертификатом, сгенерированным центром сертификации. Я могу легко создать самозаверяющий сертификат для домена xyz.com, тогда в чем разница.

У меня есть веб-сервер, который совместно использует репозитории mercurial. Он делится проектами в HTTPS с самозаверяющим сертификатом. Если я хочу клонировать репозиторий, я могу использовать.

Можно ли запустить веб-сервер Amazon Beanstalk в режиме SSL с Самозаверяющим сертификатом?

Я пишу приложение Android, которое требует сертификации SSL для определенных веб-запросов. Мне нужно создать файл PKCS12 ( .pfx ) с Самозаверяющим сертификатом. Я решил использовать библиотеку.

У меня есть сервер с самозаверяющим сертификатом . Я хочу подключить свое устройство к серверу с помощью формы https . Я слышал, что должен просто принять эту связь . Но я не знаю как . У меня есть.

Совершенно новый с Dropwizard. Я нашел много решений для работы с самозаверяющим сертификатом Jersey и ssl. Версия Dropwizard — 0.9.2 Я пытался установить SSLContext, но я получаю The method.

Я бы хотел обойти проверку сертификатов, используя Alamofire 5 и Swift 4. Я использую Alamofire для подключения к серверу с самозаверяющим сертификатом. Это похоже на этот вопрос Alamofire с.

Источник

Оцените статью