#Что означает ошибка
ERR_SSL_PROTOCOL_ERROR
ERR_SSL_PROTOCOL_ERROR в Chrome и сообщение handshake failure означают, что клиент и сервер не смогли договориться о параметрах защищённого соединения (TLS). Рукопожатие — это первый этап HTTPS: стороны выбирают версию протокола и набор шифров, проверяют сертификат. Если выбрать общий вариант не удалось, соединение разрывается.
Проблема может быть на любой стороне: на сервере включены только устаревшие протоколы или отсутствует сертификат, а у клиента неверная дата, перехватывающий антивирус или старая ОС без поддержки TLS 1.2.
Проверьте версию TLS, шифры и корректность сертификата на сервере.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Старый TLSВерсия. | Проявляется как «ERR_SSL_PROTOCOL_ERROR» или близкий по смыслу сбой. | Включите 1.2. |
| ШифрыНесовпадение. | Проявляется как «ERR_SSL_PROTOCOL_ERROR» или близкий по смыслу сбой. | Настройте. |
| ЦепочкаНеполная. | Проявляется как «ERR_SSL_PROTOCOL_ERROR» или близкий по смыслу сбой. | Добавьте. |
| ДатаСертификат. | Проявляется как «ERR_SSL_PROTOCOL_ERROR» или близкий по смыслу сбой. | Проверьте. |
#Пошаговое решение
- Проверьте SSL LabsВведите домен на и посмотрите поддержку TLS и цепочку сертификатов.
- Включите TLS 1.2/1.3Администратору своего Nginx. Проверьте в действующем блоке
serverпараметрыssl_protocolsи совместимость клиентов. Для современных серверов допустим вариантssl_protocols TLSv1.2 TLSv1.3;с поддерживаемыми шифрами, но сначала сохраните конфигурацию. На сервере выполнитеsudo nginx -t; только если тест успешен,sudo systemctl reload nginx. Посетителю менять TLS-настройки браузера ради обхода ошибки не следует. - Установите промежуточные сертификатыДля администратора сайта на Nginx/Certbot. Убедитесь, что сертификат соответствует домену и не истёк. В конфигурации HTTPS используйте реальный путь к полной цепочке, выданный вашей службой сертификатов (например, файл
fullchain.pemCertbot), но не копируйте чужой образец с заглушкой «домен». Сохраните старую конфигурацию, выполнитеsudo nginx -t, затем при успехе перезагрузите конфигурациюsudo systemctl reload nginxи проверьте сайт из другой сети.
#Если вы пользователь
Проверьте дату и время, отключите проверку HTTPS в антивирусе, прокси и VPN, откройте сайт в другом браузере и с другого устройства. Очистите кэш SSL-состояния (Свойства браузера → Содержание → Очистить SSL). Если сайт не открывается нигде, проблема на стороне сервера.
#Если вы администратор
Проверьте, что на 443-м порту действительно включён SSL и привязан сертификат (ошибка частая в nginx: listen 443 без ssl). Включите TLS 1.2 и 1.3, уберите SSLv3/TLS 1.0/1.1 и устаревшие шифры. Убедитесь, что установлена полная цепочка сертификатов и работает SNI для нескольких доменов на одном IP.
#Диагностика
Проверьте сайт онлайн-сканером SSL Labs и командой openssl s_client. В выводе видно, какая версия протокола согласована и какие ошибки возникли. Для внутренних сервисов с самоподписанным сертификатом добавьте корневой сертификат в доверенные.
openssl s_client -connect example.com:443 -servername example.com -tls1_2#Как проверить результат
Откройте сайт в Chrome и нажмите на значок замка: в сведениях о соединении должна быть указана версия TLS 1.2 или 1.3 и действительный сертификат. Проверьте сайт также в режиме инкогнито, чтобы исключить влияние расширений и кэша. Администратору стоит повторить проверку SSL Labs: оценка A или A+ говорит о правильной настройке протоколов и шифров.