Сообщение об ошибке
net::ERR_SSL_PROTOCOL_ERROR
На странице ошибки отображается как «ERR_SSL_PROTOCOL_ERROR», в инструментах автоматизации и DevTools — как «net::ERR_SSL_PROTOCOL_ERROR».
Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"
Что это означает
Chrome не смог завершить TLS-рукопожатие, потому что ответ сервера нарушал протокол: чаще всего это был вовсе не TLS (на этом порту работает обычный HTTP-сервер без шифрования) или сервер прислал повреждённые либо неожиданные данные рукопожатия. На странице написано «This site can't provide a secure connection — <host> sent an invalid response». Сертификаты здесь ни при чём.
Почему это происходит
https:// на порт, где работает обычный HTTP
частоСерверы разработки, порты админ-панелей или сервер, на котором не настроен приём TLS-соединений.
HSTS навязывает https:// сайту разработки, который работает по обычному HTTP
частоДомены из списка предзагрузки HSTS (например, .dev и .app) и хосты, которые раньше присылали заголовок Strict-Transport-Security, всегда открываются по https://, даже если локальный сервер работает только по HTTP.
Неправильно настроенный или неисправный TLS-сервер
иногдаПрокси с неверно указанным протоколом бэкенда, сетевые устройства с ошибками или сервер, который закрывает соединение посреди рукопожатия.
Вмешательство антивируса или межсетевого экрана
иногдаФункции проверки HTTPS-трафика и сетевые фильтры, которые нарушают рукопожатие, вызывают ту же ошибку на сайтах, где в остальном всё в порядке.
Как исправить
- 1.
Проверьте, по какому протоколу отвечает порт
Если отвечает обычный HTTP, используйте порт с TLS или включите TLS на этом порту.
bash curl -si http://www.example.com:8080/ | head -1 # plain HTTP answers? openssl s_client -connect www.example.com:443 -servername www.example.com -brief </dev/null - 2.
При разработке: сбросьте HSTS или используйте локальный HTTPS
Удалите запись HSTS для хоста на странице chrome://net-internals/#hsts (для доменов из списка предзагрузки это невозможно) или выдайте серверу разработки локально доверенный сертификат.
text Local development on a domain with HSTS (e.g. *.dev, or a site you once visited over HTTPS): open chrome://net-internals/#hsts, "Delete domain security policies" for the host, or serve the dev site over HTTPS with a locally trusted certificate (mkcert). - 3.
Владельцам сайтов: включите TLS на порту, который обслуживает https://
Настройте на этом порту TLS с сертификатом и проверьте рукопожатие извне.
text Site owners: make sure the port that browsers reach with https:// has TLS enabled (nginx: "listen 443 ssl;" plus ssl_certificate / ssl_certificate_key).