🧱 Суть

Certbot – это инструмент, который автоматически получает SSL-сертификаты от Let's Encrypt и подключает их к Nginx.

После настройки:

http://letunoff.ru

https://letunoff.ru

Сайт работает через HTTPS.

📦 Проблема

1. HTTP не защищён

Без SSL:

http://example.com

Данные между пользователем и сервером передаются без шифрования.

2. Ручная настройка SSL сложная

Нужно самостоятельно:

  • получить сертификат
  • указать пути к файлам
  • настроить HTTPS
  • сделать редирект HTTP → HTTPS

✅ Решение

Использовать связку:

Nginx + Certbot + Let's Encrypt

Certbot автоматически:

  • получает сертификат
  • проверяет владение доменом
  • добавляет SSL в конфиг Nginx
  • настраивает редирект HTTP → HTTPS

💻 Код

Установка Certbot

sudo apt install certbot python3-certbot-nginx

Получение сертификата

sudo certbot --nginx -d letunoff.ru -d www.letunoff.ru

Что произойдёт:

  1. Certbot проверит домен через HTTP-01 challenge
  2. Получит сертификат Let’s Encrypt
  3. Добавит SSL-настройки в Nginx
  4. Настроит HTTPS-редирект

Конфигурация Nginx

После установки сертификата конфиг выглядит примерно так:

server {
    server_name letunoff.ru www.letunoff.ru;
 
    location / {
        root /var/www/portfolio;
        index index.html;
    }
 
    location /onemate {
        proxy_pass http://localhost:3000/;
        proxy_http_version 1.1;
 
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
 
        proxy_cache_bypass $http_upgrade;
    }
 
    listen 443 ssl;
 
    ssl_certificate /etc/letsencrypt/live/letunoff.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/letunoff.ru/privkey.pem;
 
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Редирект HTTP → HTTPS:

server {
    listen 80;
 
    server_name letunoff.ru www.letunoff.ru;
 
    return 301 https://$host$request_uri;
}

Важные моменты

Перед запуском проверить конфиг:

sudo nginx -t

Если всё успешно:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Применить изменения:

sudo systemctl reload nginx

🎯 Вывод

  • Certbot автоматически подключает HTTPS к Nginx
  • Let’s Encrypt выдаёт бесплатные SSL-сертификаты
  • Nginx хранит сертификаты в /etc/letsencrypt/
  • после настройки весь HTTP-трафик переводится на HTTPS
  • всегда проверяй конфиг через nginx -t перед перезагрузкой

🔗 Связано