Продовження та налаштування SSL-сертифіката сайту
Прострочений SSL означає негайний простій: браузери показують помилки безпеки та блокують доступ. Правильне налаштування автоматичного поновлення виключає цю проблему.
Let's Encrypt: автоматичне оновлення
# Встановлення Certbot
sudo apt install certbot python3-certbot-nginx
# Отримання сертифіката
sudo certbot --nginx -d mysite.com -d www.mysite.com
# Перевірка автоматичного оновлення (Certbot встановлює systemd timer)
sudo systemctl status certbot.timer
# Тест оновлення (без фактичного оновлення)
sudo certbot renew --dry-run
# Примусове оновлення
sudo certbot renew --force-renewal
Certbot автоматично поновлює сертифікати за 30 днів до закінчення.
Wildcard-сертифікат Let's Encrypt
# Wildcard вимагає DNS-валідацію
sudo certbot certonly --manual --preferred-challenges=dns \
-d mysite.com -d "*.mysite.com"
# Автоматизація через DNS плагін (Cloudflare)
sudo apt install python3-certbot-dns-cloudflare
echo "dns_cloudflare_api_token = CF_TOKEN" > /etc/letsencrypt/cloudflare.ini
chmod 600 /etc/letsencrypt/cloudflare.ini
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d mysite.com -d "*.mysite.com" \
--preferred-challenges dns-01
Платний сертифікат: ручне оновлення
# 1. Створення CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout mysite.com.key \
-out mysite.com.csr \
-subj "/C=UA/ST=Kyiv/L=Kyiv/O=My Company/CN=mysite.com"
# 2. Відправити CSR у CA (Sectigo, DigiCert та ін.)
# 3. Отримати .crt + ланцюжок
# 4. Встановити в Nginx:
cat mysite.com.crt intermediate.crt > fullchain.crt
# nginx.conf
ssl_certificate /etc/ssl/mysite.com/fullchain.crt;
ssl_certificate_key /etc/ssl/mysite.com/mysite.com.key;
Моніторинг терміну дії
# Ручна перевірка
echo | openssl s_client -servername mysite.com -connect mysite.com:443 2>/dev/null \
| openssl x509 -noout -dates
# Скрипт для кількох доменів
for domain in mysite.com api.mysite.com admin.mysite.com; do
expiry=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null \
| openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
echo "$domain: $expiry"
done
HSTS та OCSP Stapling
# Включати HSTS тільки після перевірки, що HTTPS працює правильно
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# OCSP Stapling (прискорює SSL-рукостиск)
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/mysite.com/chain.pem;
resolver 8.8.8.8 1.1.1.1 valid=300s;
Перевірка конфігурації
- SSL Labs: ssllabs.com/ssltest → повинен бути A або A+
- Mozilla Observatory: observatory.mozilla.org
Налаштування Let's Encrypt з автоматичним оновленням — 30–60 хвилин.







