devopscodepro
Язык
через сервер

Аудит SSL / TLS

Цепочка сертификатов, сроки, отзыв, доверие и security-заголовки — проверки с оценками и понятными исправлениями. Бесплатно, без регистрации.

мы смотрим только на то, что видно публично — без агентов и без доступов
C
example.com
пример отчёта · 10 проверок · 7 pass · 2 warn · 1 fail
сертификат действителен 218 днейTLS 1.3HSTS частичнонет CSP
Действительность сертификата
Сертификат действителен, истекает через 218 дней. Выдан Let's Encrypt.
PASS
Статус отзыва
Сертификат не отозван — проверено по списку отзыва (CRL) удостоверяющего центра.
PASS
Доверие к сертификату
Цепочка сертификата ведёт к публично доверенному корню. Выдан Let's Encrypt.
PASS
Соответствие домену
Сертификат покрывает example.com.
PASS
Цепочка сертификатов
Полная цепочка отдаётся в правильном порядке; промежуточные сертификаты на месте.
PASS
Версии протоколов
Включены TLS 1.2 и 1.3, но сервер всё ещё принимает TLS 1.0 — протокол устарел и отмечается комплаенс-сканерами.
исправление: отключите TLS 1.0/1.1 в конфигурации сервера или балансировщика
WARN
Наборы шифров
Предпочитаются современные AEAD-шифры; заведомо слабых наборов нет.
PASS
HSTS
Strict-Transport-Security установлен, но max-age короткий и нет флага preload.
исправление: max-age=31536000; includeSubDomains; preload
WARN
Security-заголовки
Content-Security-Policy отсутствует — а это главная защита от XSS на домене.
исправление: начните с CSP в режиме report-only, затем включите принудительно
FAIL
OCSP stapling
Сервер прикрепляет свежий OCSP-ответ — проверка отзыва быстрее и приватнее.
PASS
пример отчёта — запустите скан выше для живого результата

Как работает эта проверка

Мы открываем TLS-соединение с хостом снаружи вашей сети — ровно так же, как это делает браузер, — и читаем то, что отдаёт сервер: цепочку сертификатов, версии протоколов и наборы шифров, на которые он соглашается, и заголовки безопасности в ответе. Ничего не устанавливается, доступы не нужны: всё проверяемое и так публично.

Отзыв проверяется у самого удостоверяющего центра, а не только по файлу сертификата: прикреплённый OCSP-ответ, OCSP-респондер центра и список отзыва (CRL). Это единственная поломка, которую не видно по сроку действия: отозванный сертификат остаётся внутри срока и проходит TLS-рукопожатие, а браузеры отказываются открывать сайт с ошибкой ERR_CERT_REVOKED.

Каждая проверка получает pass, warn или fail, а итоговая оценка — по худшей из них. Warn обычно означает, что конфигурация работает сегодня, но выстрелит позже: сертификат истекает в ближайшие 30 дней, HSTS без поддоменов, TLS 1.0 всё ещё включён ради клиента, которого давно нет.

Оценка состоит из двух уровней. F означает, что браузеры отказываются открывать сайт прямо сейчас: сертификат истёк, отозван, самоподписан, выдан недоверенным центром или не покрывает этот домен. Ничем другим это не компенсируется. Всё, что ниже F, считается по очкам: проваленная проверка весит как три предупреждения, а сумма сдвигает букву от A до D.

Проверка что-то меняет на моём сервере?

Нет. Выполняется обычное TLS-рукопожатие и один HTTPS-запрос — такой же трафик создаёт любой посетитель. Ничего не записывается, соединение закрывается сразу после получения заголовков ответа.

Сертификат действителен, но браузер пишет ERR_CERT_REVOKED. Что случилось?

Удостоверяющий центр отозвал сертификат раньше срока — из-за компрометации ключа, перевыпуска или прекращения обслуживания клиента. В файле сертификат по-прежнему выглядит нормально и TLS-рукопожатие проходит, поэтому большинство инструментов считают его валидным. Этот аудит спрашивает у самого центра — через OCSP или CRL, — поэтому отозванный сертификат виден как проваленная проверка с датой и причиной отзыва. Лечится только выпуском нового сертификата: отзыв отменить нельзя.

Почему у сайта оценка F, если провалена всего одна проверка?

F — это не сумма баллов, а состояние: браузеры отказываются открывать сайт. К нему приводят только пять находок: истёкший сертификат, отозванный, самоподписанный, недоверенный издатель или сертификат, не покрывающий домен. В каждом случае посетитель видит вместо сайта предупреждение во весь экран, и идеальная настройка TLS вокруг этого ничего не меняет. Исправьте эту проверку — и оценка сразу вернётся в диапазон A–D.

В браузере сертификат валиден, а здесь ошибка. Почему?

Почти всегда — неполная цепочка. Браузер кэширует промежуточные сертификаты с других сайтов, поэтому сервер, забывший отдать промежуточный, работает у вас и ломается у нового клиента: мобильного приложения, curl, соседнего сервиса. Отдавайте полную цепочку — проверка пройдёт.

Оценка B из-за заголовков безопасности. Это проблема TLS?

Нет, и именно поэтому они показаны вместе. Сертификат может быть идеальным, а сайт при этом отдаваться без HSTS и без Content-Security-Policy. Это правки в одну строку на стороне сервера, которые сразу поднимают оценку.

Как часто перепроверять?

При каждом обновлении сертификата и после любых изменений обратного прокси или CDN. И то, и другое — типичные источники сюрпризов: обновление, потерявшее промежуточный сертификат, или прокси, тихо вернувший старый протокол.

Можно проверить внутренний хост?

Нет. Проба идёт из публичного интернета, поэтому хост должен резолвиться и отвечать публично. Это сделано намеренно: инструмент, способный дотянуться до внутренних адресов, был бы сканером чужой сети.

Смежные инструменты: Security-заголовки, HTTP-заголовки и Здоровье DNS.