Получаем валидные сертификаты 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
Создадим конфигурацию для сайта 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
Получить SSL сертификат мы можем несколькими способами:
1. С использованием плагина webroot
certbot certonly -a webroot -w /usr/share/nginx/html --email adm@newsite.com --agree-tos -d newsite.com -d www.newsite.com
2. С использованием плагина nginx
certbot certonly --nginx -d newsite.com -d www.newsite.com
3. С использованием плагина dns-cloudflare, если ваш домен делегирован на сервера Cloudflare
mkdir /root/.secrets
echo 'dns_cloudflare_email = "adm@newsite.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 newsite.com -d www.newsite.com
Проверяем наличие сертификата в директории:
ls -l /etc/letsencrypt/live/
Создадим скрипт для автоматического продления сертификатов:
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
Новость отредактировал: sobir - 9-03-2023, 11:26
Причина: Информация обновлена
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда следующие строки:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
после просто подключить в конфиге nginx:
proxy_pass https://your_backend;
include proxy_params;
на Ubuntu такой файл уже существует можно просто подключить
Можно ещё так:
1. Создаем отдельную сеть для наших контейнеров
docker network create zbx-net
2. Указываем сеть по умолчанию в docker-compose.yml
networks:
default:
name: zbx-net
external: true
Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible
certbot certonly --force-renew -d newsite.com