Один из способов получить бесплатные SSL/TLS сертификаты от Let's Encrypt.
Устанавливать и настраивать будем на примере Debian Bullseye.
Обновляем список пакетов и устанавливаем:
# apt update
- letsencrypt и certbot это один и тот же пакет;
# apt install letsencrypt
Останавливаем Nginx:
# /etc/init.d/nginx stop
Получение сертификатов:
Для получения сертификатов - необходимо чтобы был открыт TCP 80 порт.
# letsencrypt certonly --email <email> -d <domain> --must-staple --staple-ocsp
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- Выбираем 1
Получение Wildcard-сертификатов:
Для выпуска сертификаты необходимо добавить проверочные TXT-записи.
# letsencrypt certonly --agree-tos --email <email> --manual --preferred-challenges dns -d '*.<domain>' -d <domain>
Проверка TXT-записей:
# dig @8.8.8.8 TXT _acme-challenge.<domain>
# nslookup -query=TXT _acme-challenge.<domain>
# host -t TXT _acme-challenge.<domain>
# https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<domain>.
Удостоверимся что они получены:
# ls /etc/letsencrypt/live/<domain>/
cert.pem chain.pem fullchain.pem privkey.pem
+ Генерируем ключ Диффи-Хеллмана:
# openssl dhparam -out /etc/ssl/nginx/dhparam.pem 2048 или 4096
Прописываем их:
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem; # path to fullchain.pem | .crt;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem; # path to privkey.pem | .key;
#ssl_trusted_certificate /etc/letsencrypt/live/<domain>/chain.pem; # Если включён ssl_stapling;
ssl_dhparam /etc/ssl/nginx/dhparam.pem; # | else <= TLS 1.3;
Запускаем Nginx:
# /etc/init.d/nginx start
Обновление сертификата:
- Останавливаем демон Nginx,
# /etc/init.d/nginx stop
- Проверка,
# letsencrypt renew --dry-run | certbot renew --dry-run
- Обновление,
# letsencrypt renew | certbot renew
- Запускаем демон Nginx,
# /etc/init.d/nginx start
Revoking/Removal certificates: [link]
# man letsencrypt
# certbot revoke --cert-name ${YOUR_DOMAIN}
--- Or:
# certbot revoke --cert-path /etc/letsencrypt/archive/<domain>/cert1.pem
# certbot revoke --cert-path /etc/letsencrypt/live/<domain>/cert1.pem
--- Удаление сертификата:
# certbot delete --cert-name <domain>
Полезные источники:
| Certbot |