Установка Let's Encrypt для Nginx на Ubuntu 18.04

Установка Let's Encrypt для Nginx на Ubuntu 18.04

В этой статье будет рассмотрена установка Let's Encrypt для Nginx на Ubuntu 16.04 с помощью программы Certbot. Также мы настроим Certbot для автоматического обновления сертификата.

Введение

Let's Encrypt - это центр сертификации (Certificate Authority, CA), которые даёт возможность абсолютно любому веб-мастеру получить TLS/SSL сертификат бесплатно, тем самым обеспечивая HTTPS-подключение, которое всем рекомендует использовать Google. В настоящее время весь процесс получения и установки сертификата для Apache или Nginx можно автоматизировать с помощью Certbot.

Подготовка

Для установки Let's Encrypt  вам необходимы:

  • Сервер на Ubuntu 16.04. Также рекомендуется выполнить базовую настройку сервера Ubuntu
  • Доменное имя, привязанное к серверу. В данном уроке будем использовать условный домен example.com
  • Правильно настроенные DNS
    • А-запись для example.com с IP-адресом сервера
    • А-запись для www.example.com с IP-адресом сервера

Установка Certbot

Приступим. Добавим репозиторий с ПО Certbot:

sudo add-apt-repository ppa:certbot/certbot

Обновим список пакетов:

sudo apt-get update

И, наконец, установим Certbot для Nginx:

sudo apt-get install python-certbot-nginx

Всё, Certbot готов к использованию, но перед тем, как приступить к установке Let's Encrypt давайте проверим некоторые настройки Nginx.

Настройка Nginx

Certbot автоматически способен настроить конфигурационный файл Nginx для SSL, однако для этого необходимо, что бы блок server был правильно настроен. Давайте проверим правильность поля server_name в настройке Nginx.

Откроем файл настроек:

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

Укажите в поле server_name ваш домен. Для нашего тестового домена строка server_name будет выглядеть следующим образом:

. . .
server_name example.com www.example.com;
. . .

Сохраните изменения и выполните проверку файлов настроек Nginx командой:

sudo nginx -t

Данная команда проверит правильность всех конфигов Nginx и выведет в консоле результат проверки. Если вы получили ошибку при выполнении команды, исправьте её и повторите проверку.

Напоследок нам осталось перезапустить Nginx:

sudo systemctl reload nginx

Разрешаем HTTPS подключение к серверу

Если вы активировали ufw брандмауэр, то необходимо разрешить HTTPS подключения у серверу. Текущие настройки брандмауэра можно проверить следующей командой:

sudo ufw status

Ответ будет выглядеть примерно так:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Для добавления HTTPS выполните следующие команды:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

Результат проверки теперь должен выглядеть так:

sudo ufw status
Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Всё, теперь мы готовы к установке SSL сертификата.

Получение и установка Let's Encrypt

Certbot для Nginx позволяет в автоматическом режиме получить и установить SSL сертификат, перенастроить конфиги Nginx и выполнить его перезапуск. Выполните следующую команду, заменить example.com на ваш домен.

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

Эта команда запускает процесс установки Let's Encrypt для --nginx Nginx, -d указывает ПО для какого домена необходимо получить сертификат.

В процессе выполнения вам необходимо будет указать email. Далее вы увидите следующий вопрос:

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

1 - установка Let's Encrypt без редиректа с HTTP на HTTPS

2 - установка Let's Encrypt с редиректом с HTTP на HTTPS

Выберите подходящий вам вариант и нажмите Enter. На этом всё, вы установили SLL сертификат от Let's Encrypt.

Заключение

На этом всё. По поводу автоматического обновления сертификата. Вам нет необходимости что либо делать, за вас всё сделает Certbot.