Вики / Сеть
TLS-сертификаты (openssl, Let's Encrypt)
Проверка и выпуск сертификатов — openssl для диагностики, certbot для Let's Encrypt.
TLS-сертификат подтверждает подлинность сервера и шифрует трафик (HTTPS). Состоит из
пары ключ + сертификат, подписанный центром (CA). Для публичных сайтов сертификаты
бесплатно выдаёт Let's Encrypt (через certbot).
openssl — для диагностики и ручных операций.
# что за сертификат отдаёт сервер и до какого числа валиден
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -dates -subject -issuer
# посмотреть локальный файл сертификата
openssl x509 -in cert.pem -noout -text
openssl x509 -in cert.pem -noout -enddate # дата истечения
# проверить, что ключ и сертификат — пара (modulus должны совпасть)
openssl x509 -in cert.pem -noout -modulus | openssl md5
openssl rsa -in key.pem -noout -modulus | openssl md5
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com # выпустить + настроить nginx
sudo certbot renew --dry-run # проверить автопродление
sudo certbot certificates # список выданных сертификатов
Продление автоматическое (systemd-таймер certbot.timer). Сертификаты живут
90 дней; продлеваются за 30 до конца.
Сертификат истёк / NET::ERR_CERT_DATE_INVALID
Проверь дату: openssl ... -enddate. Продли (certbot renew); проверь, что таймер
активен (systemctl status certbot.timer). Также проверь время на сервере
(см. timedatectl) — «истёк» может быть из-за сбитых часов.
curl: SSL certificate problem
Неполная цепочка (нет промежуточных) или самоподписанный. Сервер должен отдавать
fullchain. Проверь: openssl s_client -connect host:443 -showcerts.
certbot: challenge failed
Домен должен резолвиться на этот сервер и порт 80 быть доступен снаружи (HTTP-01). Проверь DNS и файрвол.
nginx не видит новый сертификат
После обновления — systemctl reload nginx (см. nginx).
# проверить сертификат сервера
openssl s_client -connect host:443 -servername host </dev/null 2>/dev/null | openssl x509 -noout -dates
sudo certbot --nginx -d domain # выпустить для nginx
sudo certbot renew --dry-run # проверить автопродление
openssl x509 -in cert.pem -noout -enddate # когда истекает
См. также
- curl (HTTP из консоли) — Сеть
- nginx — Службы и systemd
- sshd (SSH-сервер) — Службы и systemd