Как настроить HTTPS и бесплатный SSL-сертификат в Nginx

9 минут чтения

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

1. Подготовка к установке

Перед настройкой SSL убедитесь, что:

  • У вас установлен Nginx и настроен сервер.
  • Доменное имя корректно указывает на ваш сервер (A-запись в DNS).
  • Сервер имеет доступ в интернет для получения сертификата.

Проверить, установлен ли Nginx, можно командой:

nginx -v

Если не установлен, установите его:

sudo apt update && sudo apt install nginx -y

2. Установка Certbot и получение SSL-сертификата

Certbot — это инструмент для автоматической установки и обновления SSL-сертификатов от Let's Encrypt.

2.1. Установка Certbot

sudo apt install certbot python3-certbot-nginx -y

2.2. Запрос сертификата

Выполните команду для автоматической настройки SSL в Nginx:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Замените yourdomain.com на свой домен. Certbot автоматически обновит конфигурацию Nginx.

При первом запуске потребуется ввести email и согласиться с условиями использования.

После успешной установки сертификата Certbot автоматически перезапустит Nginx.

3. Проверка и тестирование SSL

Проверьте корректность работы HTTPS:

sudo nginx -t

Если конфигурация верна, перезапустите Nginx:

sudo systemctl reload nginx

Затем откройте браузер и перейдите по адресу https://yourdomain.com, убедившись, что соединение защищено.

4. Автоматическое обновление сертификатов

Сертификаты Let's Encrypt действительны 90 дней, но их можно обновлять автоматически.

Проверьте работу автоматического обновления:

sudo certbot renew --dry-run

Добавьте задачу в cron для автоматического обновления:

sudo crontab -e

Добавьте строку:

0 3 * * * certbot renew --quiet

Теперь обновление будет выполняться автоматически раз в день в 03:00.

5. Ручная настройка HTTPS в Nginx (если Certbot не обновил конфиг)

Если Certbot не изменил конфигурацию, настройте её вручную. Откройте файл настроек сайта:

sudo nano /etc/nginx/sites-available/default

Добавьте или измените блок:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;
 
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 
    location / {
        proxy_pass http://localhost:3000; # Укажите порт вашего приложения
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Сохраните изменения (CTRL+X, затем Y и Enter), проверьте конфигурацию:

sudo nginx -t

И перезапустите Nginx:

sudo systemctl reload nginx

Заключение

Теперь ваш сайт работает по HTTPS с бесплатным SSL-сертификатом от Let's Encrypt. Использование автоматического обновления через Certbot обеспечит постоянную защиту без необходимости вручную продлевать сертификаты.

Ключевые моменты:

  • Используйте certbot для автоматической настройки и продления SSL.
  • Перенаправьте HTTP на HTTPS для безопасности.
  • Регулярно проверяйте актуальность сертификатов.

Теперь ваш сайт защищён, и пользователи могут безопасно взаимодействовать с ним.

9 минут чтения

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний