Intereting Posts
Проверьте, является ли путь файлом или папкой Android Studio – запуск сборки сворачивает все папки в браузере проекта? Кордова Android Не удалось загрузить ресурс: net :: ERR_NAME_NOT_RESOLVED Доступ к файлам из каталога ресурсов / www Камера Android: требуется фронтальная или задняя камера Выбор файла изображения из галереи с помощью FileProvider Вызвано: android.database.sqlite.SQLiteException: нет такой таблицы: (код 1) Android Случайный андроид.content.res.Resources $ NotFoundException YouTubePlayer не загружает рекламное видео с помощью cueVideo () Android – настройка настраиваемого выделенного фона для ClickSpan Переопределите андроидную аппаратную кнопку назад, заставьте ее выйти на одну страницу и вернуть ее на следующих страницах Как использовать exoplayer для Android Почему AlertDialog.Builder (контекст контекста) принимает действие только как параметр? Android restlet добавляет нестандартный заголовок param ProGuard: дублированное определение класса библиотеки?

Неизвестная ошибка протокола с HTTPS-соединением на Android

Я звоню в службу REST, используя HTTPS в приложении Android. У меня уже есть рабочий код для этого, но теперь, когда я использую недавно установленный сервер, на котором размещается служба REST, я больше не могу устанавливать соединение.

Вот исключение:

javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x15b7768: Failure in SSL library, usually a protocol error error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x402e5cc3:0x00000000) 

Приложение использует классы Apache для взаимодействия с службой REST. Я получаю эту ошибку даже при использовании фиктивного TrustManager, который принимает любой вид сертификата.

При вызове службы REST из Android Navigator соединение успешно установлено и работает нормально.

На Android-телефоне установлена ​​последняя версия 4.0.3 Android от HTC.

Служба REST – это размещенное приложение mod_perl в Apache, настроенное с поддержкой SSL.

Просмотр исходного кода OpenSSL на https://github.com/android/platform_external_openssl/blob/ics-mr0/ssl/s23_clnt.c не дает мне никаких советов, кроме проблемы с низким уровнем.

Любое предложение о том, как отладить это дальше?

Solutions Collecting From Web of "Неизвестная ошибка протокола с HTTPS-соединением на Android"

Хорошо, я нашел, в чем проблема.

Следуя предложению использовать OpenSSL s_client, я понял, что я использую неправильный номер порта для соединения. Новый сервер использует стандартный порт SSL, который не был для другого сервера, который я использовал ранее.

Поскольку сервер не отвечал в соответствии с протоколом SSL, ответ не мог быть эффективно декодирован OpenSSL и, следовательно, Unknown Protocol Error .

Для людей, желающих узнать, как я использовал OpenSSL s_client (в вашей оболочке):

 $ openssl s_client -connect myhost.example.com:443 -tls1 -servername myhost.example.com 

Параметр -servername имя сервера (SNI), чтобы гарантировать, что сервер предоставляет правильный сертификат, если на сервере размещено несколько сайтов. SNI – это опция TLS 1.0 (и выше), и обычно работают -tls1_1 и -tls1_2 .

Затем отображается информация о загрузке грузовика в отношении только что открытого SSL-соединения.