DataLife Engine / Получаем валидные сертификаты SSL от Let's Encrypt для NGINX

Получаем валидные сертификаты SSL от Let's Encrypt для NGINX


Let’s Encrypt — это бесплатный, автоматизированный и открытый Центр Сертификации, созданный некоммерческой организацией Internet Security Research Group (ISRG).

Центр сертификации Let’s Encrypt выдаёт валидные сертификаты SSL сроком действия на 90 дней. Мы также можем автоматизировать процесс продления сертификатов с помощью запланировщика задач cron.

Устанавливаем необходимые пакеты:

Ubuntu / Debian
apt install certbot python3-certbot-nginx python3-certbot-dns-cloudflare -y

RHEL
dnf install certbot python3-certbot-nginx python3-certbot-dns-cloudflare -y

Создадим конфигурацию для сайта example.com в NGINX:
vi /etc/nginx/conf.d/example_com.conf
server {
    listen       80;
    server_name  example.com www.example.com;
	
    #return 301 https://$host$request_uri;

    root   /usr/share/nginx/html;
    index  index.html;

    location / {
        deny all;
    }

    location ^~ /.well-known {
        default_type 'text/plain';
	allow all;
    }

    error_log	/var/log/nginx/example_com_error.log error;
    access_log  /var/log/nginx/example_com_access.log;
}

Проверяем изменения на наличие ошибок и перечитываем конфиг:
nginx -t
nginx -s reload

Получить SSL сертификат мы можем несколькими способами:

1. С использованием плагина webroot

certbot certonly -a webroot -w /usr/share/nginx/html --email admin@example.com --agree-tos -d example.com -d www.example.com

2. С использованием плагина nginx

certbot certonly --nginx -d example.com -d www.example.com

3. С использованием плагина dns-cloudflare, если ваш домен делегирован на сервера Cloudflare

mkdir /root/.secrets
echo 'dns_cloudflare_email = "admin@example.com"' > /root/.secrets/cloudflare.ini
echo 'dns_cloudflare_api_key = "put_your_api_key"' >> /root/.secrets/cloudflare.ini
chmod -R 700 /root/.secrets
certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d example.com -d www.example.com

Подсказка:

Также мы можем использовать токен dns_cloudflare_api_token вместо dns_cloudflare_email и dns_cloudflare_api_key:
echo 'dns_cloudflare_api_token = "put_your_token"' > /root/.secrets/cloudflare.ini

Проверяем наличие сертификата в директории:
ls -l /etc/letsencrypt/live/

Запланируем автоматическое продление сертификатов раз в месяц:
crontab -e
0 0 1 * * certbot renew
Вчера, 23:58
Вернуться назад