Skip to content

Ошибка SSL — что значит и как исправить

Ошибка SSL — это когда браузер пытается установить HTTPS-соединение, но проверка сертификата проваливается. Браузер показывает большую красную предупреждающую страницу: «Ваше подключение не защищено», «NET::ERR_CERT_AUTHORITY_INVALID» и подобные. Пользователи обычно пугаются и уходят.

  • 🚨 Браузер показывает «Не защищено» или предупреждение с красным замочком
  • 🔍 Причина — проблема с SSL-сертификатом сайта
  • 🛠️ Чаще всего: истёк, неправильное доменное имя, или сломана цепочка
  • ⏰ Самая частая причина — забыли продлить (избегайте этого через Мониторинг SSL)

Сертификат был выдан, например, до 1 мая. Сегодня 5 мая. Браузер: «не доверяю».

Это самая частая причина SSL-ошибок. Let’s Encrypt живёт 90 дней — забыл продлить, получи красную страницу.

2. Сертификат на другой домен

Section titled “2. Сертификат на другой домен”

У вас сайт example.com, а сертификат выдан на othersite.ru. Браузер: «имена не совпадают».

Бывает при:

  • Переезде между хостингами
  • Использовании дефолтного сертификата хостера
  • Неверной настройке virtual hosts в nginx

3. Самоподписанный сертификат

Section titled “3. Самоподписанный сертификат”

Сертификат не от доверенного центра (Let’s Encrypt, Comodo и т.п.), а сгенерирован самостоятельно. В тестовой среде нормально, в проде — нет.

4. Сломана цепочка сертификатов

Section titled “4. Сломана цепочка сертификатов”

Браузер получает только сам сертификат вашего домена, но не получает промежуточные сертификаты от центра сертификации. Без цепочки браузер не может проверить подпись.

Это самая коварная ошибка: в Chrome может работать (он добирает intermediate сам), а в Safari — нет.

5. Сертификат отозван (revoked)

Section titled “5. Сертификат отозван (revoked)”

Центр сертификации (CA) отозвал ваш сертификат — например, после компрометации приватного ключа. Браузер проверяет через OCSP/CRL и блокирует.

Сервер настроен на устаревшие cipher suites (SSL 3.0, TLS 1.0, RC4). Современные браузеры считают это небезопасным и отказывают.

7. Несоответствие времени

Section titled “7. Несоответствие времени”

На клиенте или сервере серьёзно сбито время. Сертификат «из будущего» или «уже истёкший» с точки зрения клиента.

Сайт использует HSTS Pinning, и подменили сертификат на другой (даже валидный, но другой). Браузер: «не тот сертификат который я ожидал».

1. Открыть openssl s_client:

Terminal window
openssl s_client -connect example.com:443 -servername example.com

Покажет:

  • Цепочку сертификатов
  • Срок действия (notBefore, notAfter)
  • Какие алгоритмы используются

2. Проверить через SSL Labs:

ssllabs.com/ssltest — комплексный аудит вашего SSL. Покажет оценку (A+/B/C/F), все проблемы, что починить.

3. Простой curl:

Terminal window
curl -v https://example.com

В выводе будут подробности SSL handshake.

4. Проверить срок сертификата:

Terminal window
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

Покажет notBefore и notAfter дату.

Сценарий A: сертификат истёк

Выпустить новый. Через наш бесплатный генератор или через certbot:

Terminal window
sudo certbot renew

После — перезагрузить веб-сервер:

Terminal window
sudo systemctl reload nginx

Сценарий B: сертификат на другой домен

Нужно выпустить сертификат именно на ваш домен или с поддержкой нескольких доменов (SAN-сертификат).

В нашем генераторе можно указать несколько доменов через запятую:

example.com, www.example.com

Сценарий C: сломана цепочка

В nginx используйте fullchain.pem, а не cert.pem:

ssl_certificate /etc/ssl/example.com/fullchain.pem; # ← это правильно
# ssl_certificate /etc/ssl/example.com/cert.pem; # ← это сломано
ssl_certificate_key /etc/ssl/example.com/privkey.pem;

fullchain.pem = cert.pem + chain.pem. С ним браузер получает всё необходимое.

Сценарий D: самоподписанный сертификат

Не использовать в проде. Выпустить настоящий через Let’s Encrypt (бесплатно) — см. Бесплатный SSL-генератор.

Сценарий E: слабые шифры

Обновите конфиг nginx:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Проверьте через SSL Labs — должны получить A или A+.

Сценарий F: время на сервере сбито

Terminal window
date
sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd

Если на вашем сайте красная страница «Не защищено»:

  1. Не паникуйте — клиенты пугаются, но это лечится за 30 минут
  2. Если домен на хостинге с автоматическим SSL (Tilda, Bitrix24, многие shared-хостинги) — обратитесь в их техподдержку
  3. Если у вас обычный VPS — нужен разработчик с SSH-доступом, чтобы выпустить новый сертификат
  4. Параллельно подключите мониторинг Monisite — мы предупреждаем за 30 дней до истечения сертификата, чтобы такая ситуация больше не повторилась

Просроченный SSL — главная причина «внезапных» падений сайтов. Мониторинг решает это полностью:

  • Каждый день проверяем срок ваших сертификатов
  • Предупреждаем по 7 порогам (за 30, 20, 14, 10, 7, 5, 3 дней)
  • При сломанной цепочке или ошибке handshake — уведомление в Telegram/MAX/email
  • Бесплатно

Подробнее: Мониторинг SSL · Бесплатный SSL-генератор.

Подключить мониторинг →