Думаю, что я бы посмотрел сейчас, это реализация ssl на стороне сервера. Если у вас есть несколько служб с тем же сертификатом для поддержки SNI, и если он настроен правильно. Затем посмотрите, подключен ли сервис, с которым вы подключаете, правильный сертификат. Также проверьте альтернативное имя объекта на своем сервере и настройте его под свои нужды.
Для этой задачи вы можете использовать эти команды.
Общих проблем с Hostname проверкой Как уже упоминались в начала этой статьи, есть два ключевые частей верификации SSL соединения. Первый заключается в проверке сертификата от надежного источника , который был в центре внимания предыдущего раздела. В центре внимания этого раздела есть вторая часть: убедитесь, что сервер, на котором вы разговариваете, , представляет собой правильный сертификат. Когда это не так, вы будете видеть, как правило об ошибке, как это:
java.io.IOException: Hostname «example.com» не была проверена на libcore.net.http.HttpConnection.verifySecureSocketHostname (HttpConnection. Java: 223) в libcore.net.http.HttpsURLConnectionImpl $ HttpsEngine.connect (HttpsURLConnectionImpl.java:446) в libcore.net.http.HttpEngine.sendSocketRequest (HttpEngine.java:290) в libcore.net.http. HttpEngine.sendRequest (HttpEngine.java:240) на libcore.net.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java:282) на libcore.net.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:177) на libcore.net.http.HttpsURLConnectionImpl.getInputStream (HttpsURLConnectionImpl.java:271) Одна из причин этого может произойти из-за ошибки конфигурации сервера.Сервер настроен с сертификатом, у которого нет объекта , или укажите альтернативные поля имени, соответствующие серверу, с которым вы работаете . Можно использовать один сертификат с многими различными серверами. Например, глядя на сертификат google.com с openssl s_client -connect google.com:443 | openssl x509 -text вы можете видеть, что тема, которая поддерживает * .google.com, но , также подвергает альтернативные имена * .youtube.com, * .android.com и другим. Ошибка возникает только тогда, когда имя сервера, с которым вы подключаетесь , не указано в сертификате как приемлемое.
К сожалению, это может произойти и по другой причине: виртуальный хостинг. При совместном использовании сервера для более чем одного имени хоста с HTTP, , веб-сервер может сообщить по запросу HTTP/1.1, который нацелен на имя хоста, которого клиент ищет. К сожалению, это сложное с HTTPS, потому что сервер должен знать, какой сертификат возвращает , прежде чем он увидит HTTP-запрос. Чтобы решить эту проблему, более новые версии SSL, в частности TLSv.1.0 и более поздних версий, поддерживают имя сервера Индикация (SNI), которая позволяет клиенту SSL указывать на сервере предполагаемое имя хоста , чтобы можно было вернуть правильный сертификат.
К счастью, HttpsURLConnection поддерживает SNI с Android 2.3. К сожалению, HTTP-клиент Apache этого не делает, что является одной из многих причин, по которым мы отказываемся использовать его. Один обходной путь, если вам необходимо поддерживать Android 2.2 (и старше) или Apache HTTP Client - это настроить альтернативный виртуальный хост на уникальный порт, чтобы он однозначно , какой сертификат сервера должен быть возвращен.
Надеюсь, это поможет.
Если вы хотите, чтобы мы помогли, вы должны предоставить реальную информацию, а не использовать чужой сайт, такой как 'xyz.com' (это настоящий сайт). – jww
Извините, что я использовал действительный хост. К сожалению, я не могу раскрывать информацию о клиенте и надеюсь, что вы это поймете. – bjoernb