Все сертификаты, выдаваемые Let's Encrypt, имеют срок действия в 90 дней и это его второй относительный минус.
Статьи Время чтения: 3 минуты Просмотров: 656
Все сертификаты, выдаваемые 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-у