Проверка SSL-сертификата и TLS

Срок действия, TLS-версии (1.0–1.3), алгоритм подписи, размер ключа, SAN. Покажем когда обновлять и где слабо.

Что такое SSL/TLS и зачем его проверять

SSL (теперь TLS) — протокол шифрования трафика между браузером и сервером. Без него пароли, формы, cookies, платежи можно перехватить на любом промежуточном узле. С 2018 HTTPS — обязательный стандарт: Chrome помечает HTTP-сайты «Не защищено», Google понижает в выдаче, Web Push и геолокация работают только по HTTPS.

Сертификат может быть валидным, но с устаревшими настройками: TLS 1.0/1.1, RSA-1024, SHA-1 — всё это уязвимости для современных атак (BEAST, POODLE, SLOTH). Наш чекер проверяет 9 ключевых параметров.

Что мы проверяем

Сертификат

  • Валидность — прошёл ли cert проверку доверия корневых CA
  • Срок до истечения — алёрт если <30 дней (Let's Encrypt обновляет за 30 дней до)
  • Hostname match — покрывает ли cert запрошенный домен через CN или SAN
  • Issuer — кто выпустил (Let's Encrypt, DigiCert, Sectigo и т.д.)

TLS-версии

  • TLS 1.3 — желаемый, быстрее на 30%, поддерживается с 2018
  • TLS 1.2 — минимальный современный стандарт (с 2008)
  • TLS 1.1 — deprecated с 2020, должен быть отключён
  • TLS 1.0 — deprecated с 2020, провал PCI DSS, отключать

Правильная настройка nginx: ssl_protocols TLSv1.2 TLSv1.3;

Криптография

  • Алгоритм подписи — должен быть SHA-256, SHA-384 или SHA-512. SHA-1 deprecated с 2016
  • Размер ключа — RSA 2048+ ИЛИ ECDSA 256+. RSA <2048 — критическая уязвимость
  • SAN — современные сертификаты используют SAN вместо CN. Если SAN пуст — Chrome 114+ ругается

FAQ

Что лучше — Let's Encrypt бесплатный или платный?

Для большинства сайтов Let's Encrypt лучше. Бесплатно, ECDSA, автообновление через certbot, валиден везде. Платный имеет смысл только для: EV-сертификатов (зелёная строка) — но Chrome убрал отображение в 2019, или для Wildcard на много субдоменов с одним cert.

Сертификат истёк — что делать срочно?

Все браузеры показывают полноэкранную ошибку «Не безопасно», сайт фактически недоступен. Срочно перевыпустите cert через certbot renew (Let's Encrypt) или панель регистратора. Параллельно проверьте почему автообновление не сработало — почти всегда это сломанный cron или права на /etc/letsencrypt.

Можно ли использовать самоподписанный SSL?

Только для разработки и внутренних сервисов. На продакшене — нет: все браузеры покажут warning, юзеры уйдут. Самоподписанный = TOFU (trust on first use), который ломается при ротации cert.

Я перевыпустил сертификат, а проверка показывает старый. Почему?

Браузер и наш сервис кэшируют SSL-handshake на ~1-2 минуты. Если поменяли cert — подождите 5 минут и проверьте снова. Если nginx — обязательно nginx -s reload после замены файла. Обновите вручную: echo | openssl s_client -connect domain.ru:443

Что такое OCSP stapling и нужен ли он?

OCSP stapling — техника, при которой сервер сам подгружает «свежесть» cert от CA и подсовывает её клиенту в handshake. Без неё каждый клиент идёт сам в OCSP-responder CA — медленнее на 100-300мс. Включение в nginx: ssl_stapling on; ssl_stapling_verify on;

Связанные инструменты