1) Получение сертификата
Для установки wildcard сертификата letsencrypt воспользуемся утилитой certbot
.
Стоит оговориться что для получения wildcard сертификата, подтверждение владения доменом возможно только через TXT
запись в DNS.
yum install certbot
Затем :
certbot -d *.zobra.ru -d zobra.ru --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory
После этого нам зададут пару вопросов: email куда будут приходить уведомления о заканчивающемся сроке действия сертификата и предложат добавить TXT запись _acme-challenge
в DNS. В общем все это будет выглядеть как то так:
certbot -d *.zobra.ru -d zobra.ru --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: dns-01 challenge for zobra.ru - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NOTE: The IP of this machine will be publicly logged as having requested this certificate. If you're running certbot in manual mode on a machine that is not your server, please ensure you're okay with that. Are you OK with your IP being logged? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.zobra.ru with the following value: qVPvtxQ5b05FZcZrcDaIwEs23PNg-RsOpgn92s9I2dA Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continuedig @8.8.8.8 -t txt _acme-challenge. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/zobra.ru/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/zobra.ru/privkey.pem Your cert will expire on 2020-02-13. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - 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
Стоит отметить что после обновления записей DNS перед продолжением нужно выждать 2-5 минут (возможно дольше) что бы запись распространилась.


После того как certbot
отработал, полученные сертификаты будут находиться здесь:
/etc/letsencrypt/live/zobra.ru
Здесь будут файлы cert.pem, chain.pem, fullchain.pem, privkey.pem, README
2) Настройка автопродления сертификатов
Тут всё просто, точнее даже очень просто.
Создаем исполняемый bash скрипт
nano /root/zobra-ssl-new.sh
следующего содержания:
#!/bin/bash
/usr/bin/certbot renew --post-hook "service nginx reload"
даем права на выполнение
chmod +x /root/zobra-ssl-new.sh
и размещаем его в crontab:
env EDITOR=nano crontab -e
добавляем запись
05 04 */7 * * /root/zobra-ssl-new.sh
Нажимаем Ctrl + O и нажимаем Enter.
В результате каждую неделю скрипт будет запускаться и проверять необходимость обновления сертификатов. В случае такой необходимости сертификаты автоматически будут обновлены и будет запущен хук обновляющий конфигурацию сервера nginx (в моём случае)