Получение SSL-сертификата с использованием Cloudflare, Let's Encrypt и настройка Nginx

SSL-сертификаты обеспечивают безопасность передачи данных между пользователями и серверами. Интеграция Let's Encrypt и Cloudflare позволяет автоматизировать этот процесс. В этой статье мы рассмотрим шаги по получению SSL-сертификата и его настройку в Nginx.
Требования
- Доменное имя, зарегистрированное через Cloudflare.
- Сервер на Ubuntu с установленными правами суперпользователя.
- Аккаунт в Cloudflare с созданным API-токеном для управления DNS.
- Установленный веб-сервер Nginx.
Шаги по установке
- Установите Certbot и плагин для Cloudflare:
sudo apt install certbot
sudo apt install python3-certbot-dns-cloudflare
- Настройте файл учетных данных Cloudflare:
echo "dns_cloudflare_api_token = your_token" >> ~/credentials
chmod 600 ~/credentials
- Получите SSL-сертификат:
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/credentials \
-d yourdomain.name
После выполнения этой команды сертификаты будут сохранены в директории /etc/letsencrypt/live/yourdomain.name/
. Там вы найдете следующие файлы:
fullchain.pem
— полный цепочечный сертификат.privkey.pem
— закрытый ключ.
Настройка Nginx для использования SSL-сертификатов:
Настройте ваш сервер Nginx для работы с полученными сертификатами. Откройте конфигурационный файл вашего сайта:
sudo nano /etc/nginx/sites-available/yourdomain.name
И добавьте или отредактируйте блок server следующим образом:
server {
listen 443 ssl;
server_name yourdomain.name;
ssl_certificate /etc/letsencrypt/live/yourdomain.name/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.name/privkey.pem;
location / {
proxy_pass http://localhost:YOUR_PORT;
proxy_set_header Host $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;
}
}
server {
listen 80;
server_name yourdomain.name;
return 301 https://$host$request_uri;
}
Перезапустите Nginx: Чтобы изменения вступили в силу, перезапустите Nginx:
sudo systemctl restart nginx
Заключение
С помощью Cloudflare, Let's Encrypt и Nginx можно легко настроить безопасное соединение для вашего сайта, даже без белого IP адреса. Этот процесс включает в себя получение сертификата и его интеграцию в веб-сервер, обеспечивая защиту данных пользователей. Убедитесь, что автоматическое обновление сертификатов предусмотрено, так как они действительны только 90 дней.