Поиск по сайту:

Как настроить Let’s Encrypt с блоками сервера Nginx в Ubuntu 16.04


Введение

Let’s Encrypt — это центр сертификации (ЦС), который предоставляет простой способ получения и установки бесплатных сертификатов TLS/SSL, тем самым обеспечивая шифрование HTTPS на веб-серверах. Он упрощает процесс, предоставляя программный клиент Certbot, который пытается автоматизировать большинство (если не все) необходимых шагов. В настоящее время весь процесс получения и установки сертификата полностью автоматизирован как на Apache, так и на Nginx.

В этом руководстве вы будете использовать Certbot, чтобы получить бесплатный SSL-сертификат для Nginx в Ubuntu 16.04 и настроить автоматическое обновление сертификата.

В этом руководстве будет использоваться отдельный файл блока сервера Nginx вместо файла по умолчанию. это руководство по Nginx + Let’s Encrypt.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Один сервер Ubuntu 16.04, настроенный в соответствии с этим руководством по начальной настройке сервера для Ubuntu 16.04, включая пользователя без полномочий root и брандмауэр.
  • Полностью зарегистрированное доменное имя. В этом руководстве везде будет использоваться example.com. Вы можете приобрести доменное имя на Freenom или воспользоваться услугами регистратора доменов по вашему выбору.
  • Обе следующие записи DNS настроены для вашего сервера. Вы можете следовать этому руководству по имени хоста, чтобы узнать, как их добавить.
    • Запись A с example.com, указывающая на общедоступный IP-адрес вашего сервера.
    • Запись A с www.example.com, указывающая на общедоступный IP-адрес вашего сервера.

    Nginx установлен в соответствии с инструкциями по установке Nginx в Ubuntu 16.04.

    Отдельный файл блока сервера Nginx для вашего домена, настроенный в соответствии с этим руководством по блокам сервера Nginx для Ubuntu 16.04. В этом руководстве будет использоваться /etc/nginx/sites-available/example.com.

    Шаг 1 — Установка Certbot

    Первым шагом к использованию Let’s Encrypt для получения SSL-сертификата является установка программного обеспечения Certbot на ваш сервер.

    Certbot находится в очень активной разработке, поэтому пакеты Certbot, предоставляемые Ubuntu, как правило, устарели. Однако разработчики Certbot поддерживают репозиторий программного обеспечения Ubuntu с последними версиями, поэтому вместо этого мы будем использовать этот репозиторий.

    Сначала добавьте репозиторий.

    1. sudo add-apt-repository ppa:certbot/certbot

    Вам нужно будет нажать ENTER, чтобы принять. Затем обновите список пакетов, чтобы получить информацию о пакете нового репозитория.

    1. sudo apt-get update

    И, наконец, установите пакет Certbot Nginx с помощью apt-get.

    1. sudo apt-get install python-certbot-nginx

    Теперь Certbot готов к использованию, но для того, чтобы он мог настроить SSL для Nginx, нам нужно проверить некоторые настройки Nginx.

    Шаг 2 — Подтверждение конфигурации Nginx

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

    Если вы следовали предварительному руководству по блокам сервера Nginx, у вас должен быть блок сервера для вашего домена по адресу /etc/nginx/sites-available/example.com с < директиваserver_name уже установлена соответствующим образом.

    Для проверки откройте файл блока сервера для вашего домена с помощью nano или вашего любимого текстового редактора.

    1. sudo nano /etc/nginx/sites-available/example.com

    Найдите существующую строку server_name. Это должно выглядеть так:

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

    Если это так, вы можете выйти из редактора и перейти к следующему шагу.

    Если это не так, обновите его, чтобы он соответствовал. Затем сохраните файл, закройте редактор и проверьте синтаксис изменений конфигурации.

    1. sudo nginx -t

    Если вы получили сообщение об ошибке, повторно откройте файл блока сервера и проверьте наличие опечаток или отсутствующих символов. Как только синтаксис вашего файла конфигурации будет правильным, перезагрузите Nginx, чтобы загрузить новую конфигурацию.

    1. sudo systemctl reload nginx

    Теперь Certbot может найти правильный блок server и обновить его.

    Далее мы обновим наш брандмауэр, чтобы разрешить HTTPS-трафик.

    Шаг 3 — Разрешение HTTPS через брандмауэр

    Если у вас включен брандмауэр ufw, как рекомендовано в руководствах по предварительным требованиям, вам необходимо изменить настройки, чтобы разрешить HTTPS-трафик. К счастью, Nginx регистрирует несколько профилей в ufw при установке.

    Вы можете увидеть текущую настройку, набрав:

    1. sudo ufw status

    Вероятно, это будет выглядеть так, что означает, что к веб-серверу разрешен только HTTP-трафик:

    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, мы можем разрешить полный профиль Nginx, а затем удалить избыточный допуск профиля Nginx HTTP:

    1. sudo ufw allow 'Nginx Full'
    2. sudo ufw delete allow 'Nginx HTTP'

    Теперь ваш статус должен выглядеть так:

    1. 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)

    Теперь мы готовы запустить Certbot и получить наши сертификаты.

    Шаг 4 — Получение SSL-сертификата

    Certbot предоставляет различные способы получения SSL-сертификатов с помощью различных подключаемых модулей. Плагин Nginx позаботится о перенастройке Nginx и перезагрузке конфигурации при необходимости:

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

    Это запускает certbot с плагином --nginx, используя -d, чтобы указать имена, для которых мы хотим, чтобы сертификат был действительным.

    Если вы впервые запускаете certbot, вам будет предложено ввести адрес электронной почты и принять условия обслуживания. После этого certbot свяжется с сервером Let’s Encrypt, а затем запустит вызов, чтобы убедиться, что вы контролируете домен, для которого запрашиваете сертификат.

    В случае успеха certbot спросит, как вы хотите настроить параметры HTTPS.

    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):

    Выберите свой вариант и нажмите ENTER. Конфигурация будет обновлена, и Nginx перезагрузится, чтобы принять новые настройки. certbot завершится сообщением о том, что процесс прошел успешно и где хранятся ваши сертификаты:

    Output
    IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2017-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

    Ваши сертификаты загружены, установлены и загружены. Попробуйте перезагрузить свой веб-сайт с помощью https:// и обратите внимание на индикатор безопасности вашего браузера. Это должно указывать на то, что сайт должным образом защищен, обычно с зеленым значком замка. Если вы протестируете свой сервер с помощью SSL Labs Server Test, он получит оценку A.

    Давайте закончим тестированием процесса обновления.

    Шаг 5 — Проверка автоматического продления Certbot

    Сертификаты Let’s Encrypt действительны только в течение девяноста дней. Это сделано для того, чтобы пользователи автоматизировали процесс обновления своих сертификатов. Установленный нами пакет certbot позаботится об этом, добавив скрипт обновления в /etc/cron.d. Этот скрипт запускается два раза в день и автоматически продлевает любой сертификат, срок действия которого истекает в течение тридцати дней.

    Чтобы протестировать процесс обновления, вы можете выполнить пробный запуск с помощью certbot:

    1. sudo certbot renew --dry-run

    Если вы не видите ошибок, все готово. При необходимости Certbot обновит ваши сертификаты и перезагрузит Nginx, чтобы применить изменения. Если автоматический процесс продления когда-либо завершится сбоем, Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты с предупреждением о том, что срок действия вашего сертификата скоро истечет.

    Заключение

    В этом руководстве вы установили клиент Let’s Encrypt certbot, загрузили SSL-сертификаты для своего домена, настроили Nginx для использования этих сертификатов и настроили автоматическое обновление сертификатов. Если у вас есть дополнительные вопросы об использовании Certbot, их документация — хорошее место для начала.