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

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

SSL-сертификаты обеспечивают безопасность передачи данных между пользователями и серверами. Интеграция Let's Encrypt и Cloudflare позволяет автоматизировать этот процесс. В этой статье мы рассмотрим шаги по получению SSL-сертификата и его настройку в Nginx.

Требования

  1. Доменное имя, зарегистрированное через Cloudflare.
  2. Сервер на Ubuntu с установленными правами суперпользователя.
  3. Аккаунт в Cloudflare с созданным API-токеном для управления DNS.
  4. Установленный веб-сервер Nginx.

Шаги по установке

  1. Установите Certbot и плагин для Cloudflare:
sudo apt install certbot
sudo apt install python3-certbot-dns-cloudflare
  1. Настройте файл учетных данных Cloudflare:
echo "dns_cloudflare_api_token = your_token" >> ~/credentials
chmod 600 ~/credentials
  1. Получите 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 дней.