Knowledge Base
Проверка TLS-сертификата через openssl
Анатомия TLS-сертификата
Категория: SSL/TLS · Риск: low
Анатомия TLS-сертификата
Сертификат X.509 содержит:
- **Subject / CN** — для кого выдан (domain)
- **SAN** (Subject Alternative Names) — список доменов/IP
- **Issuer** — кто подписал (CA)
- **notBefore / notAfter** — срок действия
- **Public Key** — открытый ключ
- **Signature** — подпись CA
Полный вывод openssl s_client
CONNECTED(00000003)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
depth=1 C=US, O=Let's Encrypt, CN=R3
depth=0 CN=example.com
verify return:1
---
Certificate chain
0 s:CN=example.com
i:C=US, O=Let's Encrypt, CN=R3
1 s:C=US, O=Let's Encrypt, CN=R3
i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
Три `depth` = полная цепочка. Только `depth=0` = проблема с промежуточным CA.
Проверка SAN (Subject Alternative Names)
openssl x509 -in cert.pem -noout -ext subjectAltName
Вывод должен содержать все домены, для которых действителен сертификат:
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com
Автообновление Let's Encrypt
# Проверить статус автообновления
certbot renew --dry-run
# Cron для обновления (ежедневно в 02:30)
30 2 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
Минимальная безопасная конфигурация TLS в Nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;