Ниже по тексту – инструкция, из которой вы узнаете, как можно обезопасить веб-сервер Nginx, установленный на Ubuntu 20.04, при помощи центра сертификации Let’s Encrypt.
Клиентам, чьи запросы обрабатывает ваш Nginx, вышеупомянутый ЦС сможет выдавать SSL/TLS сертификаты, причём абсолютно бесплатно. Это позволит им в дальнейшем шифровать свой трафик используя HTTPS
.
Snap пакеты
Для дальнейшей установки программного обеспечения официальная документация предлагает использовать snap пакеты, поэтому сначала необходимо инсталлировать snap:
$sudo apt update
$sudo apt install snapd
Certbot
В Let’s Encrypt утилита Certbot отвечает за управление SSL/TLS сертификатами. Устанавливается следующей инструкцией, естественно, при помощи snap пакетов:
$ sudo snap install --classic certbot
Далее, чтобы подготовить Certbot к работе, необходимо набрать в командной строке:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Настройка Nginx
Чтобы Certbot находил нужный виртуальный блок для автоматического конфигурирования SSL, нужно отредактировать файл /etc/nginx/sites-available/my-domain.host
. В вашем случае, вместо my-domain.host
используйте имя вашего домена, для которого вы настраиваете шифрование.
Для редактирования файла при помощи nano
введите:
$ sudo nano /etc/nginx/sites-available/my-domain.host
При необходимости внесите изменения в файл и сохраните их.
На всякий случай проверьте, всё ли в настройках Nginx правильно с точки зрения синтаксиса:
$ sudo nginx -t
Должно быть:
И перезапустите Nginx:
$ sudo systemctl reload nginx
HTTPS
Сначала проверьте текущий статус брандмауэра вашей системы:
$ sudo ufw status
Скорее всего, трафика HTTPS
не будет в списке разрешённых, только HTTP
:
Чтобы это исправить, необходимо разрешить Nginx Full
, при этом закрыв разрешение на Nginx HTTP
:
$sudo ufw allow 'Nginx Full'
$sudo ufw delete allow 'Nginx HTTP'
$sudo ufw status
После внесённых изменений, вывод статуса UFW выглядит примерно таким образом:
Сертификат
На этом шаге запустите Certbot используя плагин nginx
для указания доменов, которые будут использовать сертификаты:
$ sudo certbot --nginx
При первом запуске данной утилиты необходимо ввести E-mail и согласиться с предоставляемыми условиями. На одном из дальнейших шагов необходимо будет выбрать для какого именно домена требуется активировать протокол HTTPS.
В случае успешной установки сертификата Certbot выведет на экран следующее сообщение:
Также, установку сертификата можно запустить командой:
$ sudo certbot certonly --nginx
Теперь, если вы попробуете подключиться к вашему сайту используя HTTPS
, браузер даст вам понять, что подключение к вашему домену защищено:
Обновление сертификатов
Обновление сертификатов происходит при помощи планировщика. Проверить автоматическое обновление сертификатов можно запустив команду:
$ sudo certbot renew --dry-run
Заключение
На этом всё: теперь вы знаете, как обезопасить ваш Nginx посредством такого ЦС как Let’s Encrypt. Проведена установка ПО Certbot, внесены соответствующие изменения в настройки веб-сервера и брандмауэра ОС, изготовлены и загружены сертификаты для определённых клиентских сайтов, и теперь, доступ к этим ресурсам возможен с использованием безопасного подключения.