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

RHEL / Ubuntu / Nginx 3-05-2021, 15:47 sobir 696 2


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

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

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

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

RHEL
yum install certbot-nginx -y

Создадим конфигурацию для сайта newsite.com в NGINX:
vi /etc/nginx/conf.d/newsite_com.conf
server {
    listen       80;
    server_name  newsite.com www.newsite.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/newsite_com_error.log error;
    access_log  /var/log/nginx/newsite_com_access.log;
}

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

Запускаем скрипт для получения сертификата для домена newsite.com через плагин webroot:
certbot certonly -a webroot -w /usr/share/nginx/html --email adm@newsite.com --agree-tos -d newsite.com -d www.newsite.com

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

Редактируем конфигурацию сайта:
vi /etc/nginx/conf.d/newsite_com.conf
server {
    listen       80;
    server_name  newsite.com www.newsite.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/newsite_com_error.log error;
    access_log  /var/log/nginx/newsite_com_access.log;
}

server {
    listen       443 ssl;
    server_name  newsite.com www.newsite.com;
	
    ssl_certificate /etc/letsencrypt/live/newsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/newsite.com/privkey.pem;
	
    ssl_protocols TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

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

    location / {
        try_files $uri $uri/ =404;
    }
	
    location ^~ /.well-known {
	default_type 'text/plain';
	allow all;
    }

    error_log	/var/log/nginx/newsite_com_ssl_error.log error;
    access_log  /var/log/nginx/newsite_com_ssl_access.log;
}

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

Создадим скрипт для автоматического продления сертификатов:
vi /root/le-renew.sh

#!/bin/bash
certbot renew

Запланируем запуск скрипта на каждый месяц:
crontab -e
0 0 1 * * /root/le-renew.sh

Делаем скрипт исполняемым:
chmod u+x /root/le-renew.sh
Похожие новости
Настройка обратного прокси сервера NGINX с SSL-терминацией в CentOS 8 / RHEL 8

Настраиваем обратный прокси сервер NGINX с SSL-терминацией и генерируем бесплатные валидные сертификаты SSL...

Подробнее
Настраиваем GitLab Container Registry

Выполняем настройку GitLab Container Registry....

Подробнее
Поднимаем SSL VPN OpenConnect с Let's Encrypt в Ubuntu 20.04

Поднимаем сервер SSL VPN OpenConnect для удаленного доступа пользователям....

Подробнее
Разворачиваем NGINX в Docker

Создание кастомного образа nginx из Dockerfile....

Подробнее
Установка веб сервера NGINX в CentOS 8 / RHEL 8

Установка последней стабильной версии популярного веб сервера NGINX....

Подробнее
Комментарии (2)
  1. sobir
    sobir 7 августа 2021 15:35
    Получаем SSL сертификат с помощью плагина nginx:

    certbot certonly --nginx -d newsite.com -d www.newsite.com
  2. sobir
    sobir 17 октября 2021 11:40
    Принудительное обновление сертификата:

    certbot certonly --force-renew -d newsite.com
Новые комментарии
komronu8 сентября 2022 18:23

Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда

img
К комментарию
sobir26 августа 2022 10:43

Можно ещё так: 1. Создаем отдельную сеть для наших контейнеров docker network

img
К комментарию
komronu22 августа 2022 15:12

Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible

img
К комментарию
sobir19 августа 2022 18:00

Думаю в статье необходимо также описать процесс установки Ansible.

img
К комментарию
sobir17 октября 2021 11:40

Принудительное обновление сертификата: certbot certonly --force-renew -d

img
К комментарию
sobir7 августа 2021 15:35

Получаем SSL сертификат с помощью плагина nginx: certbot certonly --nginx -d

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Февраль 2023    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728 
Облако тегов