Бесплатный 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;
...