Вступление
Let’s Encrypt - это центр сертификации (CA), который предоставляет простой способ получения и установки бесплатных https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and -csrs [TLS / SSL сертификаты], включающий зашифрованный HTTPS на веб-серверах. Это упрощает процесс, предоставляя программный клиент Certbot, который пытается автоматизировать большинство (если не все) необходимых шагов. В настоящее время весь процесс получения и установки сертификата полностью автоматизирован как в Apache, так и в Nginx.
В этом руководстве вы будете использовать Certbot для получения бесплатного SSL-сертификата для Nginx в Debian 9 и настройки автоматического обновления вашего сертификата.
В этом руководстве вместо файла по умолчанию будет использоваться отдельный файл блока сервера Nginx. We рекомендуем создание новых файлов блоков сервера Nginx для каждого домена, поскольку это помогает избежать распространенных ошибок и поддерживает файлы по умолчанию в качестве резервной конфигурации.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Один сервер Debian 9, настроенный по следующему учебному руководству inition server для Debian 9, вместе с sudo non -руткит и брандмауэр.
-
Полностью зарегистрированное доменное имя. В этом руководстве будет использоваться * example.com *. Вы можете приобрести доменное имя на https://namecheap.com [Namecheap], получить его бесплатно на Freenom или использовать регистратор домена по вашему выбору. ,
-
Обе следующие записи DNS настроены для вашего сервера. Вы можете следить за this вводной информацией о DNS DigitalOcean для получения подробной информации о том, как их добавить.
-
Запись A с
++
, указывающая на публичный IP-адрес вашего сервера. -
Запись A с
+ www. +
, Указывающая на публичный IP-адрес вашего сервера. -
Nginx устанавливается следующим образом: Как установить Nginx в Debian 9. Убедитесь, что у вас есть https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-9#step-5-%E2%80%93-setting-up-server -блокирует [блок сервера] для вашего домена. В этом руководстве в качестве примера будет использоваться
+ / etc / nginx / sites-available / +
.
Шаг 1 - Установка Certbot
Первым шагом к использованию Let Encrypt для получения SSL-сертификата является установка программного обеспечения Certbot на ваш сервер.
Certbot находится в очень активной разработке, поэтому пакеты Certbot, предоставляемые Debian с текущими стабильными выпусками, как правило, устарели. Однако мы можем получить более актуальный пакет, включив репозиторий backports Debian 9 в + / etc / apt / sources.list +
, где менеджер пакетов + + apt + ищет источники пакетов. Репозиторий backports содержит перекомпилированные пакеты, которые можно запускать без новых библиотек в стабильных дистрибутивах Debian.
Чтобы добавить репозиторий backports, сначала откройте + / etc / apt / sources.list +
:
sudo nano /etc/apt/sources.list
Внизу файла добавьте следующие зеркала из проекта Debian:
/etc/apt/sources.list
...
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
Сюда входят пакеты + main +
, совместимые с Debian Free Software Guidelines (DFSG), а также + non-free +
и `+ contrib + `компоненты, которые либо сами не совместимы с DFSG, либо включают зависимости в этой категории.
Сохраните и закройте файл, когда вы закончите.
Обновите список пакетов, чтобы получить информацию о пакете нового репозитория:
sudo apt update
И наконец, установите пакет Nginx Certbot с помощью + apt +
:
sudo apt install python-certbot-nginx -t stretch-backports
Certbot теперь готов к использованию, но для того, чтобы настроить SSL для Nginx, нам нужно проверить некоторые настройки Nginx.
Шаг 2 - Подтверждение конфигурации Nginx
Certbot должен иметь возможность найти правильный блок + server +
в вашей конфигурации Nginx, чтобы он мог автоматически настраивать SSL. В частности, он делает это путем поиска директивы + server_name +
, которая соответствует вашему запрашиваемому домену.
Если вы следовали https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-9#step-5-%E2%80%93-setting-up-server-blocks [шаг настройки блока сервера в руководстве по установке Nginx], у вас должен быть блок сервера для вашего домена в + / etc / nginx / sites-available / +
с директивой + server_name +
, которая уже установлена соответствующим образом.
Чтобы проверить, откройте файл блокировки сервера для своего домена, используя + nano +
или ваш любимый текстовый редактор:
sudo nano /etc/nginx/sites-available/
Найдите существующую строку + server_name +
. Это должно выглядеть так:
/etc/nginx/sites-available/example.com
...
server_name www.;
...
Если это произойдет, выйдите из редактора и перейдите к следующему шагу.
Если это не так, обновите его, чтобы соответствовать. Затем сохраните файл, выйдите из редактора и проверьте синтаксис изменений конфигурации:
sudo nginx -t
Если вы получили ошибку, снова откройте файл блока сервера и проверьте, нет ли опечаток или пропущенных символов. Как только синтаксис файла конфигурации будет правильным, перезагрузите Nginx, чтобы загрузить новую конфигурацию:
sudo systemctl reload nginx
Теперь Certbot может найти правильный блок + server +
и обновить его.
Далее, давайте обновим брандмауэр, чтобы разрешить HTTPS-трафик.
Шаг 3 - Разрешение HTTPS через брандмауэр
Если у вас включен брандмауэр + ufw +
, как рекомендовано в руководствах по предварительным требованиям, вам необходимо изменить настройки, чтобы разрешить трафик HTTPS.
Вы можете увидеть текущие настройки, набрав:
sudo ufw status
Вероятно, это будет выглядеть так, что означает, что веб-серверу разрешен только HTTP-трафик:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Чтобы разрешить HTTPS-трафик, разрешите полный профиль Nginx и удалите избыточный допуск профиля HTTP Nginx:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Ваш статус должен выглядеть следующим образом:
sudo ufw status
OutputStatus: 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 и перезагрузке конфигурации при необходимости. Чтобы использовать этот плагин, введите следующее:
sudo certbot --nginx -d -d
Он запускает + certbot +
с плагином + - nginx +
, используя + -d +
, чтобы указать имена, для которых мы хотим, чтобы сертификат был действительным.
Если вы впервые запускаете + certbot +
, вам будет предложено ввести адрес электронной почты и принять условия обслуживания. После этого + certbot +
свяжется с сервером Let Encrypt, а затем запустит запрос, чтобы убедиться, что вы контролируете домен, для которого запрашиваете сертификат.
В случае успеха + certbot +
спросит, как бы вы хотели настроить параметры HTTPS.
OutputPlease 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 +
завершит с сообщением о том, что процесс прошел успешно и где хранятся ваши сертификаты:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live//fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live//privkey.pem
Your cert will expire on 2018-07-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 +
:
sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. При необходимости Certbot обновит ваши сертификаты и перезагрузит Nginx, чтобы получить изменения. Если процесс автоматического продления не удастся, Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты, предупреждая вас, когда ваш сертификат скоро истечет.
Заключение
В этом руководстве вы установили клиент Let Encrypt + certbot +
, загрузили SSL-сертификаты для своего домена, настроили Nginx для использования этих сертификатов и настроили автоматическое обновление сертификатов. Если у вас есть дополнительные вопросы по использованию Certbot, their документация - хорошее место для начала.