Пост

Бесплатный Widacard SSL от Let's Encrypt, подключение в Nginx и авто обновление на Centos 7

Wildcard-сертификат — сертификат открытого ключа, который может использоваться с несколькими поддоменами *.example.ru

Устанавливаем утилиту certbot

1
$ sudo yum install certbot

Получаем SSL сертификат. Тип проверки: TXT-запись в DNS

1
$ sudo certbot certonly --manual --agree-tos --email [email protected] --preferred-challenges=dns -d example.ru -d www.example.ru
  • certonly — запрос нового сертификата;
  • manual — проверка домена вручную.
  • preferred-challenges=dns — метод проверки домена через dns.
  • agree-tos — согласие на лицензионное соглашение;
  • email — почтовый адрес администратора домена;
  • d — перечисление доменов, для которых запрашиваем сертификат.

После чего certbot попросит для проверки прописать TXT запись для доменных имен.
Прописываем их на нашем dns-сервере, ждем некоторое время, чтоб они прописались и возвращаемся в консоль для подтверждения.

Обязательно надо выждать некоторое время, пока пропишется запись, иначе проверка не пройдет, вы не получите сертификат, и при следующем запросе TXT запись будет другой

Сервис Let’s Encrypt так же выдает Wildcard SSL сертификаты. Для его получения выполним запрос:

1
$ sudo certbot certonly --manual --agree-tos --email [email protected] --preferred-challenges=dns -d example.ru -d *.example.ru

Срок действия SSL сертификата от Let’s Encrypt ограничена 3 месяцами, по-этому для обхода этого ограничения воспользуемся автоматическим обновлением

Автоматическое продление SSL-сертификата

Ищем путь до certbot:

1
2
$ which certbot
/usr/bin/certbot

Запускаем редактирование cron и добавляем строку

1
2
$ crontab -e
0 0 * * 1,4 /usr/bin/certbot renew && systemctl restart nginx

В данном случае запуск скрипта проверки и продления сертификата (если срок действия сертификата заканчивается) будет происходить по понедельникам и четвергам в 00:00. После чего будет перезапущен Nginx

Остальные настройки рассматривались ранее

Часть конфига:

1
2
3
4
5
6
7
8
9
10
11
12
server {
        listen 443 ssl default_server;
        include snippets/ssl-params.conf;
        root /var/www/html;

        server_name example.ru www.example.ru;
        index index.php index.html index.htm;

        ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/example.ru/chain.pem;
		...
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.