Приветствую!
Небольшая предыстория. Обратился знакомый с проблемой, необходимо в автоматическом режиме обновлять сертификат Let’s Encrypt в Carbonio CE. Пытался сделать сам, взяв за основу инструкцию, но сразу же столкнулся с проблемой, а именно:
***** Verifying '/tmp/cert.pem' against '/tmp/fullchain.pem'***ERROR: Unable to validate certificate chain: C = US, O = Internet Security Research Group, CN = ISRG Root X1
Облазив кучу форумов и статей, был написан простеньки скрипт:
#!/bin/bash
ulimit -t 20
DOMAIN=mail.example.ru
checkdir="/etc/letsencrypt/live/$DOMAIN"
filedb="/var/tmp/permsecdb"
out=$(
exec 2>&1
umask 266
find $checkdir -type f -printf "%m\t" -exec md5sum {} \; >$filedb.tmp
diff $filedb $filedb.tmp
mv -f $filedb.tmp $filedb
)
if [ "$out" ];then
mkdir /tmp/$DOMAIN
cd /tmp/$DOMAIN
wget -4 -O /tmp/$DOMAIN/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
wget -4 -O /tmp/$DOMAIN/letsencryptauthorityx3.pem https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt
cat /tmp/$DOMAIN/isrgrootx1.pem > /tmp/$DOMAIN/zextras_chain.pem
cat /tmp/$DOMAIN/letsencryptauthorityx3.pem >> /tmp/$DOMAIN/zextras_chain.pem
cat /etc/letsencrypt/live/$DOMAIN/chain.pem >> /tmp/$DOMAIN/zextras_chain.pem
mkdir /opt/zextras/ssl/letsencrypt
cp /tmp/$DOMAIN/* /opt/zextras/ssl/letsencrypt/
cp /etc/letsencrypt/live/$DOMAIN/* /opt/zextras/ssl/letsencrypt/
chown zextras:zextras -R /opt/zextras/ssl/letsencrypt
sudo su - zextras -c "zmcertmgr verifycrt comm /opt/zextras/ssl/letsencrypt/privkey.pem /opt/zextras/ssl/letsencrypt/cert.pem /opt/zextras/ssl/letsencrypt/zextras_chain.pem"
mv /opt/zextras/ssl/letsencrypt/privkey.pem /opt/zextras/ssl/carbonio/commercial/commercial.key
su - zextras -c "zmcertmgr deploycrt comm /opt/zextras/ssl/letsencrypt/cert.pem /opt/zextras/ssl/letsencrypt/zextras_chain.pem"
su - zextras -c "zmcontrol restart"
rm -r /tmp/$DOMAIN
echo $out
fi
exit
Скрипт проверяет на изменения файлы сертификатов в директории /etc/letsencrypt/live/$DOMAIN/ и если видит изменения запускает процесс замены сертификата, если изменений нет, просто закрывается.
Добавляем скрипт в cron и забываем о проблеме.
За основу взял данные из этой статьи https://sysos.ru/?p=586