#Что означает ошибка
Ваше подключение не защищено NET::ERR_CERT_AUTHORITY_INVALID ERR_SSL_PROTOCOL_ERROR
Браузер проверяет цепочку: сертификат сайта → промежуточный → корневой. Если промежуточный сертификат не передаётся, часть клиентов (особенно мобильные и старые) не может построить цепочку.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не установлена полная цепочкаСервер отдаёт только сертификат сайта, без промежуточного. | В браузере ошибка у части посетителей, у других открывается. | Используйте fullchain.pem (сертификат + промежуточные). |
| Истёк срок действия сертификатаСрок прошёл. | openssl s_client показывает дату notAfter в прошлом. | Перевыпустите сертификат, настройте автопродление. |
| HTTPS включён, а сертификат не настроен для доменаВ виртуальном хосте нет ssl_certificate или он для другого домена. | Ошибка ERR_SSL_PROTOCOL_ERROR на порту 443. | Проверьте конфигурацию виртуального хоста и порт 443. |
| Устаревшие протоколы или несоответствие имениВключены старые протоколы; имя в сертификате не совпадает с доменом. | Ошибка COMMON_NAME_INVALID или протокольные ошибки. | Выпустите сертификат на нужные имена, включите TLS 1.2/1.3. |
#Пошаговое решение
- Проверьте сертификат сайтаНа компьютере с OpenSSL выполните
openssl s_client -connect example.ru:443 -servername example.ru -showcerts, заменив домен. Сравните выданный сертификат, наличие промежуточных сертификатов и код проверки; затем посмотритеnotAfterчерезopenssl x509 -noout -dates. ОшибкаERR_SSL_PROTOCOL_ERRORшире, чем ошибка доверия цепочке, поэтому сначала убедитесь, что сервер вообще отвечает TLS на порту 443. - Проверьте файл сертификата в конфигурацииАдминистратор Nginx через SSH выполните
sudo nginx -T 2>&1 | grep -nE "ssl_certificate|server_name|listen 443"; для Apache посмотритеSSLCertificateFile. Проверьте, что к соответствующему хосту привязан полный набор сертификатов, а не только сертификат домена. Для Certbot в Nginx обычно используютfullchain.pem, в котором есть промежуточные сертификаты; приватный ключ хранится отдельно. - Проверьте порт и виртуальный хостПроверьте, что запрос приходит именно на
listen 443 sslнужного виртуального хоста и SNI совпадает с именем сертификата. Если CDN или балансировщик завершает HTTPS раньше вашего сервера, проверять нужно и его сертификат; подмена конфигурации origin не исправит цепочку, выдаваемую внешним прокси. - Перевыпустите или продлите сертификатЕсли сертификат действительно истёк либо выдан для другого имени, продлите/перевыпустите его у своего удостоверяющего центра. Для Let’s Encrypt сначала выполните
sudo certbot certificatesиsudo certbot renew --dry-run, затем при подтверждённой необходимостиsudo certbot renew; ошибки DNS-01/HTTP-01 диагностируйте отдельно, а не запускайте сертификатор многократно. - Замените
example.ruна ваш доменLinux · Терминал (Bash)КомандаНужен sudoЗаменитеexample.ruна ваш домен. Первая команда показывает срок и издателя; вторая проверяет продление Let’s Encrypt без выпуска.echo | openssl s_client -connect example.ru:443 -servername example.ru 2>/dev/null | openssl x509 -noout -dates -issuer -subjectsudo certbot renew --dry-run - Перезагрузите веб-серверПосле исправления выполните
sudo nginx -tилиsudo apachectl configtest, только затемreloadнужной службы. Повторите OpenSSL-проверку с SNI и откройте HTTPS в браузере на другом устройстве без отключения проверки сертификатов; при повторении ошибки сохраните текст и обратитесь к администратору прокси.
#Если не помогло
Если вы не владелец сайта, а посетитель, сообщите администратору и не вводите пароли и платёжные данные, пока предупреждение не исчезнет. Проверьте дату и время на своём устройстве: неверное время также вызывает такие ошибки.