Ошибки

ERR_SSL_PROTOCOL_ERROR: что значит и как исправить

ERR_SSL_PROTOCOL_ERROR — Chrome начал устанавливать защищённое соединение, а сервер ответил не так, как требует протокол TLS. Например, на порту 443 работает обычный HTTP без шифрования.

Обновлено 08.10.2026≈ 5 мин чтения
Содержание 10

Что сделать прямо сейчас

Если вы просто открываете сайт:

  1. Обновите страницу.
  2. Если в адресе после имени сайта стоит двоеточие и число — например, example.com:8080, — попробуйте открыть адрес без него: возможно, порт указан по ошибке.
  3. Если ошибка только на одном сайте, сообщите владельцу: скорее всего, у него неправильно настроен HTTPS.
  4. Если ошибка появляется на многих сайтах, обновите Chrome и проверьте, не мешают ли соединению антивирус или брандмауэр.

Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.

Что значит ошибка

Адрес с https:// значит, что браузер и сервер сначала договариваются о шифровании по протоколу TLS и только потом обмениваются страницами. В исходном коде Chrome ERR_SSL_PROTOCOL_ERROR — это ошибка -107, общая ошибка протокола SSL/TLS.

На тестовом сервере Chrome показал её, когда адрес открывали по https://, а на порту работал обычный HTTP без шифрования: сервер ответил на первое сообщение браузера не по TLS.

Как выглядит в Chrome

Заголовок — «Этот сайт не может обеспечить безопасное подключение», под ним — «Сайт example.com отправил недействительный ответ.» Внизу — код ERR_SSL_PROTOCOL_ERROR и кнопка «Перезагрузить». В некоторых системах Chrome предлагает ещё и запустить диагностику сети.

Причины

ПричинаКак проявляется
В настройках nginx у listen 443 нет параметра sslСервер отвечает на порту 443 без шифрования
Адрес с https:// ведёт на порт, где работает обычный HTTPОшибка только на адресах с портом, например https://example.com:8080/
Из старых настроек удалили директиву ssl on, а параметр ssl в listen не добавилиHTTPS перестал работать после правки настроек

Как проверить

Команды из этого раздела вводятся в терминале сервера. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.

Шаг 1. Отправьте обычный запрос на порт 443

curl -I http://example.com:443/

Если в ответ пришла строка с кодом ответа — например, 200 или 301, — на порту 443 работает обычный HTTP без шифрования. Правильно настроенный nginx на такой запрос отвечает кодом 400: в документации nginx этот случай описан как «обычный запрос был послан на порт HTTPS».

Шаг 2. Отправьте защищённый запрос

curl -I https://example.com/

Если сервер отвечает не по TLS, curl завершится с ошибкой 35 — сбой при установке защищённого соединения. То же покажет openssl:

openssl s_client -connect example.com:443 -servername example.com </dev/null

Если сервер не прислал сертификат, в выводе будет строка no peer certificate available.

Шаг 3. Проверьте строки listen в настройках nginx

sudo nginx -T | grep listen

В строках с портом 443 должен быть параметр ssl: listen 443 ssl.

Как исправить

Добавьте параметр ssl к listen и укажите сертификат и ключ. Для сертификата Let's Encrypt, полученного через certbot, блок выглядит так:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # остальные настройки сайта: root, location и так далее
}

Если сервер принимает соединения и по IPv6, добавьте ssl и в строку listen [::]:443.

После правок сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:

sudo nginx -t

В ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены.

Директива ssl on устарела в nginx 1.15.0 и удалена в версии 1.25.1: вместо неё нужен параметр ssl у listen. Если в старых настройках она осталась, после обновления nginx команда nginx -t сообщит об ошибке.

Если приложение на Node.js или Python само слушает порт и не умеет HTTPS, не открывайте его по https:// с портом. Поставьте перед ним nginx с сертификатом, а запросы передавайте приложению через proxy_pass — как это сделать, рассказано в инструкции Как разместить сайт на VPS. Как получить сертификат — в инструкции Бесплатный SSL-сертификат.

На обычном хостинге

Проверьте в панели хостинга, выпущен ли для домена SSL-сертификат и включён ли HTTPS. Если всё включено, а ошибка остаётся, напишите в поддержку адрес сайта и время ошибки.

Соседние ошибки

ОшибкаЧем отличается
ERR_SSL_VERSION_OR_CIPHER_MISMATCHСервер отвечает по TLS, но браузер и сервер не договорились о версии или шифре
ERR_CONNECTION_CLOSEDСервер закрыл соединение, ничего не ответив
ERR_CONNECTION_RESETСоединение оборвали сбросом
«Подключение не защищено»Сервер ответил по TLS, но сертификат не прошёл проверку

Источники

Проверено в Chrome 155 на локальном тестовом сервере 7 октября 2026 года.

Сверено 7 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 08.10.2026