CertH certH
На этой странице

Как получить оценку SSL A+ (чек-лист 2026)

Обновлено 2026-11-03 · 7 мин чтения

A+ — это не другой тип сертификата, а другая конфигурация TLS. Большинству сайтов, застрявших на A, не хватает одной настройки: они корректно завершают TLS 1.2, но так и не включили TLS 1.3 или не отправляли достаточно длинный заголовок HSTS.

Что на самом деле определяет оценку

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

Пороги простые. Для A+ нужен балл 95 или выше, TLS 1.3 в списке согласованных протоколов и HSTS либо с preload, либо с max-age не менее 180 дней. A начинается с 90, B с 80, C с 70, D с 55, всё ниже 55 — F. Просроченный сертификат автоматически даёт 0.

Четыре изменения, которые переводят с A на A+

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

  • •Включить TLS 1.3. Он даёт баллы сам по себе и обязателен для A+ даже при идеальных 100 во всём остальном.
  • •Поднять HSTS минимум до max-age=15552000 (180 дней). Один год (31536000) — обычный выбор.
  • •Отдавать полную цепочку, включая промежуточные сертификаты. Отсутствующий промежуточный проявляется как ошибка цепочки у части клиентов и стоит баллов.
  • •Включить OCSP stapling, чтобы проверка отзыва шла вместе с рукопожатием, а не раскрывала IP посетителя удостоверяющему центру.

Конфигурация nginx, дающая A+

Полный фрагмент server для современного nginx (1.19+ с OpenSSL 1.1.1+). Если ваш nginx собран со старым OpenSSL, TLS 1.3 будет молча недоступен, что бы вы здесь ни написали — сначала проверьте через nginx -V.

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

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Конфигурация Apache, дающая A+

Apache требует объявить кэш stapling один раз на уровне сервера, а не внутри виртуального хоста. Всё остальное — в блоке <VirtualHost *:443>.

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Ошибки, из-за которых сайт остаётся на A

Самая частая: включить HSTS с includeSubDomains на домене, где ещё есть поддомены только по HTTP — они мгновенно ломаются, и обычная реакция — удалить заголовок целиком, что возвращает на A. Разворачивайте HSTS поэтапно: начните с max-age 300 секунд, неделю понаблюдайте, затем поднимайте до года.

Вторая по частоте ошибка — считать, что TLS 1.3 включён, раз сертификат современный. Сертификаты и версии протокола независимы. Совершенно новый сертификат на сервере, который говорит только по TLS 1.2, всё равно даёт меньше 95.

Третья — CDN перед источником. Если Cloudflare, Fastly или балансировщик завершает TLS, конфигурация источника не имеет значения: оценка отражает edge, значит менять настройку нужно там.

Проверьте сами

Каждое изменение подтверждается в терминале за секунды. TLS 1.3 согласуется, только если сервер действительно его предлагает, HSTS виден в заголовках ответа, а stapling — в блоке OCSP-ответа.

# Does the server actually negotiate TLS 1.3?
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep "Protocol"

# Is HSTS set, and for how long?
curl -sI https://example.com | grep -i strict-transport-security

# Is OCSP stapling actually working?
openssl s_client -connect example.com:443 -status -servername example.com </dev/null 2>/dev/null | grep -A2 "OCSP Response"

FAQ

Нужен ли для A+ платный сертификат или сертификат с расширенной проверкой?

Нет. Сертификат с проверкой домена (DV) вполне может получить A+ — оценка измеряет конфигурацию TLS, а не уровень проверки. Тип сертификата важен только когда он меняет цепочку или алгоритм ключа.

Почему оценка упала после продления сертификата?

При продлении часто меняется издатель или тип ключа, а некоторые серверы после перезагрузки откатываются к другому набору шифров. CertH фиксирует изменение в разделе анализа динамики балла в отчёте по домену, с указанием конкретной причины.

Нужен ли HSTS preload для A+?

Нет. Preload — лишь один из двух способов выполнить требование HSTS; max-age не менее 180 дней без preload достаточно. Preload строже и гораздо труднее отменяется, считайте его опцией.

Читать далее