Приветствую!

Небольшая предыстория. Обратился знакомый с проблемой, необходимо в автоматическом режиме обновлять сертификат 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

Комментарии (6)


  1. Lazhu
    18.07.2023 08:00
    +1

    Облазив кучу форумов и статей так и не научились работать с certbot?


    1. Teon_501 Автор
      18.07.2023 08:00

      Тут не в нем дело, а в том как Carbonio CE проверяет сертификат


      1. AlexGluck
        18.07.2023 08:00
        +1

        То есть сертбот создаёт вам цепочку, но вы решили навелосипедить и при обновлении CA опять поймать костыли? Вам стоит лучше изучить матчасть по работе сертификатов, сертботу и карбонио.


        1. Teon_501 Автор
          18.07.2023 08:00

          Carbonio CE не умеет сам обновлять сертификаты, а certbot их генерирует на 3 мес. Даже в официальной документации прописан ручной метод обновления. Скрипт просто упрощает рутину. Сам скрипт работает более полу года и за это время не возникло ни одной проблемы.


          1. AlexGluck
            18.07.2023 08:00

            Ставите таймер системд или задание крон, настраиваете хук обновления сертификата в сертбот, цепочку СА сертбот сам создаёт и убирает дублирующую работу из скрипта. То что вы сделали это велосипед от незнания инструментов. Перечитайте комментарий и попробуйте осознать.


          1. Fell-x27
            18.07.2023 08:00

            Сертбот их ставит на 3 месяца и прописывает службу, которая их обновляет автоматически. Раньше нужно было в крон ручное обновление прописывать, сегодня и этого не требуется.