Loading...

Настраиваем механизм автоматического обновления сертификатов SSL

Все сертификаты, выдаваемые Let's Encrypt, имеют срок действия в 90 дней и это его второй относительный минус.

 Статьи   Время чтения: 3 минуты   Просмотров: 643

Настраиваем механизм автоматического обновления сертификатов SSL

Все сертификаты, выдаваемые Let's Encrypt, имеют срок действия в 90 дней и это его второй относительный минус. Столь короткий срок, равно как и отсутствие возможности использования wildcard, обусловлены заботой о повышении уровня безопасности сертифицируемых доменов.

Обновление всей базы полученных SSL сертификатов производится простой командой.

root@beta:~ # certbot renew

-------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/my.server.conf
-------------------------------------------------------------------

-------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/blanet.ru.conf
-------------------------------------------------------------------

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/my.server/fullchain.pem (skipped)
  /etc/letsencrypt/live/blanet.ru/fullchain.pem (skipped)
No renewals were attempted.

Как видно, обновления не произошло, поскольку используются "свежие" сертификаты. Однако, если бы до срока их окончания оставалось 30 дней и меньше они были бы обновлены в автоматическом режиме. При этом индексный номер самих файлов сертификатов получил бы следующее по порядку значение.

Зная это, напишем простой shell-скрипт для автоматического обновления базы сертификатов по cron.

root@beta:~ # cd /etc/letsencrypt/
root@beta:/etc/letsencrypt # ll lerenew.sh
-rwxr-xr-x  1 root  wheel  929 27 may 15:08 lerenew.sh*
root@beta:/etc/letsencrypt # cat lerenew.sh
#!bin/sh

# Update "Let's Encrypt" certs and make cert and key joined
# file for Apache # (c)2015 by Oleg Prokofiev http://blanet.ru e-mail: info@blanet.ru # # cat /etc/crontab | grep lerenew # 0 0 * * 1 root /etc/letsencrypt/lerenew.sh >/dev/null 2>&1 lepath="/etc/letsencrypt" joincrt="privandcert" # joined file name certbot renew -nv >> /var/log/letsencrypt/renew.log 2>&1 certs=`find ${lepath}/archive/*/cert*.pem -mtime -1d` if [ "${certs}" ]; then for i in $certs; do dir=`dirname $i` # path to certs dom=`basename $dir` # domain name ind=`basename $i | tr -d '[:alpha:].'` # current cert version cat ${dir}/privkey${ind}.pem $i > ${dir}/${joincrt}${ind}.pem cd ${lepath}/live/${dom} ln -fs ../../archive/${dom}/${joincrt}${ind}.pem ${joincrt}.pem done service httpd restart fi

В данном случае при его выполнении будет произведена проверка сроков действия имеющихся в хранилище сертификатов и в случае их возраста старше 60 дней будет произведена их автоматическая замена. В последнем случает будет подготовлен и новый совместный файл публичной и закрытой части сертификата для Apache и произведена его переинициализация.

Добавим задание в cron для еженедельной проверки и обновления выданных Let's encrypt сертификатов.

root@beta:~ # cd /etc/cron.weekly

копируем туда наш lerenew.sh, а также не забываем выставить права на выполнения root-у



Автор: Google

Последние страницы

©2009-2024 Blanet.Ru. Все права защищены.