#Что означает ошибка
SSL handshake failed
Handshake не проходит, если клиент и сервер не поддерживают общие версии TLS или шифры. Включите TLS 1.2/1.3 и обновите ПО.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Старый TLS | Сравните обстоятельства появления ошибки с указанным признаком и не меняйте настройки без подтверждения. | Обновите. После действия повторите исходную операцию. |
| Нет общих шифров | Сравните обстоятельства появления ошибки с указанным признаком и не меняйте настройки без подтверждения. | Согласуйте. |
| Неверный сертификат | Сравните дату, время и часовой пояс; для ошибки HTTPS посмотрите имя сайта и срок действия сертификата, не обходя предупреждение. | Исправьте. |
| Прокси/ПО | Сравните работу через другую сеть; если сбой остаётся только в одной сети, проверьте её настройки и ограничения. | Отключите. После проверки восстановите прежнее состояние, если ошибка не исчезла. |
#Пошаговое решение
- Проверьте openssl s_clientВ терминале с OpenSSL выполните
openssl s_client -connect example.com:443 -servername example.com -showcerts, заменив адрес своим доменом. Проверьте согласованную версию TLS, список выданных сертификатов и сообщения проверки. Не отправляйте закрытый ключ на сторонние сайты. - Включите TLS 1.2/1.3Администратору своего Nginx. Проверьте в действующем блоке
serverпараметрыssl_protocolsи совместимость клиентов. Для современных серверов допустим вариантssl_protocols TLSv1.2 TLSv1.3;с поддерживаемыми шифрами, но сначала сохраните конфигурацию. На сервере выполнитеsudo nginx -t; только если тест успешен,sudo systemctl reload nginx. Посетителю менять TLS-настройки браузера ради обхода ошибки не следует. - Обновите клиентЕсли несовместимость TLS возникла в вашем приложении, сначала узнайте его версию: обычно «Справка → О программе», для браузера — меню → «Справка → О браузере». Обновите приложение и операционную систему штатным способом. Для скрипта на собственном сервере проверьте версию библиотеки TLS и командой
openssl versionузнайте версию установленного OpenSSL (в терминале именно той машины, где работает клиент). После обновления повторите запрос к прежнему адресу. Не включайте устаревшие TLS 1.0/1.1 и не отключайте проверку сертификата: если сервер поддерживает только устаревший протокол, его должен исправить администратор. - Проверьте прокси и перехват HTTPS, не отключая защитуЕсли ошибка видна только в офисной сети, сравните тот же HTTPS-адрес через мобильное подключение. На Windows откройте «Пуск → Безопасность Windows → Защита от вирусов и угроз → Журнал защиты», чтобы проверить сообщения о блокировке в момент сбоя; на управляемом ПК обратитесь к администратору прокси или средства TLS-инспекции. Посетителю не нужно вручную устанавливать неизвестные корневые сертификаты, добавлять исключения TLS или запускать
curl -k. Администратор сайта должен отдельно проверить цепочку сертификатов и набор протоколов своего сервера. - Проверка рукопожатияLinux · Терминал (Bash)КомандаПроверка рукопожатия.
openssl s_client -connect example.com:443 -servername example.com
#Проверка результата
Откройте тот же адрес, где возникало «SSL handshake failed — несовместимая версия TLS или шифры», в исходном браузере. Сравните с другим подключением и проверьте точный код ответа. Не используйте незащищённые обходы HTTPS как доказательство исправления.