Установка сертификата Let’s Encrypt Nginx в CentOS 7

Материал из Шпаргалка знаний
Перейти к навигации Перейти к поиску

Для владельцев сайтов рано или поздно наступает вопрос перехода сайта на https с использованием доверенных SSL-сертификатов. Можно его приобрести за деньги, можно сэкономить и получить бесплатный сертификат Let’s Encrypt, но с небольшими неудобствами в виде ограничения срока действия в 90 дней, которые решаются в данной статье.

Установка Certbot.

1. Для установки Certbot необходимо сначала установить репозиторий epel-release, командой:

yum install epel-release -y

2. Переходим к установке клиента Certbot и плагина nginx, если в роли веб-сервера у вас Nginx:

yum install certbot python2-certbot-nginx -y

для веб-сервера сайта на Apache команда будет следующая:

yum install certbot python2-certbot-apache -y

Получение сертификата Let’s Encrypt.

3. Выполняем команду, которая выполнит запрос на получение SSL-сертификата для веб-сервера Nginx:

certbot --nginx

для Apache:

certbot --apache

После ввода команды мы должны получить вывод с просьбой указать e-mail, где указываем свой почтовый ящик и нажимаем Enter:

# Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): adminwin@mail.ru

4. После ввода e-mail нам предлагается ознакомиться и подтвердить лицензионное соглашение, нажав «Y»:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

5. Снова видим запрос на публикацию введенного e-mail, который отклоняем клавишей «N» и видимо сообщение «Аккаунт зарегистрирован»:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.

6. На этом шаге Certbot исследует конфигурационный файл и директорию веб-сервера и должен найти домен сайта. Если на сервере несколько доменов, то он отразит все, из которых надо будет выбрать необходимый соответствующей клавишей:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ithelp21.ru
2: adminwin.ru
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 2

и получаем ответ, где говорится, что сертификат развернут и запросы на 80 порт (http) перенаправляются на 443 (https). Может открыть страницу сайта в браузере и убедиться, что адресная строка с https://.

Deploying certificate to virtualhost /etc/nginx/sites-enabled/adminwin
Traffic on port 80 already redirecting to ssl in /etc/nginx/sites-enabled/adminwin
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! Your have sucessfully enabled https://adminwin.ru
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

   IMPORTANT NOTES:
 - 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

8. Для контрольной проверки введем команду, которая принудительно перевыпустит сертификат:

certbot renew --dry-run

Автоматическое обновление сертификатов Certbot

9. Так как срок действия бесплатного сертификата Let’s Encrypt 90 дней, то нужно процесс перевыпуска автоматизировать. Для этого зададим команду таймера обновления certbot:

sudo systemctl enable --now certbot-renew.timer

в ответ выдаст:

Created symlink from /etc/systemd/system/timers.target.wants/certbot-renew.timer to /usr/lib/systemd/system/certbot-renew.timer.

Проверим статус таймера, что он активный:

sudo systemctl status certbot-renew.timer
certbot-renew.timer - This is the timer to set the schedule for automated renewals
Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Wed 2021-04-07 23:05:10 MSK; 20s ago

Завершение установки SLL-сертификата.

10. Осталось учесть момент, что после перевыпуска сертификата, веб-сервер NGINX нужно обязательно перезагрузить. Для этого перейдем к файлу /etc/sysconfig/certbot:

nano /etc/sysconfig/certbot

в открывшемся файле находим параметр POST_HOOK и добавляем к нему команду на перезагрузку Nginx после перевыпуска сертификата.

POST_HOOK="--post-hook 'systemctl reload nginx'"

12.Проверим статус таймера, что он активный:

sudo systemctl status certbot-renew.timer

На этом все. Более подробно с разъяснениями старался раскрыть в видео, где на adminwin.ru применял SSL-сертификат с палками в колесах.