Как настроить HTTPS и бесплатный SSL-сертификат в Nginx
Защита данных с помощью 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 для безопасности.
- Регулярно проверяйте актуальность сертификатов.
Теперь ваш сайт защищён, и пользователи могут безопасно взаимодействовать с ним.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний