Создадим скрипт и сделаем его исполняемым
touch /scripts/ssl_update.sh chmod +x /scripts/ssl_update.shСам скрипт выглядит так:
#!/bin/bash
zimbra_path="/opt/zimbra/ssl/letsencrypt"
branch_name="oldfag.ru"
# Проверяем наличие каталога, если его нет, то создаём
if [ ! -d ${zimbra_path} ]; then
mkdir -m 0700 ${zimbra_path}
chown -R zimbra: ${zimbra_path}
fi
# Функция обновления сертификата
certificate_update () {
su - zimbra -c "zmcertmgr verifycrt comm ${zimbra_path}/privkey.pem ${zimbra_path}/cert.pem ${zimbra_path}/chain.pem"
if [ $? == 1 ]; then
echo "certificate not verified"
exit 1
fi
# Сохраняем резервную копию сертификатов
cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d")
# Устанавлвием новый сертификат
cp ${zimbra_path}/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
su - zimbra -c "zmcertmgr deploycrt comm ${zimbra_path}/cert.pem ${zimbra_path}/chain.pem"
if [ $? == 1 ]; then
echo "certificate deploy failed"
exit 1
fi
su - zimbra -c "zmcontrol restart"
}
# Проверяем существование локального репозитория, если его нет, то создаём
if [ ! -d "${zimbra_path}/.git" ]; then
git clone --single-branch --branch ${branch_name} https://gituser:gituserpassword@gitlab.oldfag.ru/automation/ssl.git ${zimbra_path}/.
certificate_update
fi
# Проверяем, есть ли обновления в репозитории
cd ${zimbra_path}
git fetch
if [ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]; then
git pull
certificate_update
fi
Для работы скрипта на любом другом сервере нужно изменить только 2 переменных zimbra_path - каталог, в который будут загружаться сертификаты,
и branch_name - имя ветки репозитория, в которой хранятся необходимые сертификаты.
При использовании https есть верятность того, что на сервере Zimbra будет отсутствовать корневой сертефикат удостоверяющего центра, выдвшего сертификат, используемый на сервере GitLab, в результате чего при при выполнении git [ clone | fetch | pull ] будет выдаваться сообщение об ошибке. Как это решить описано в соответствующей заметке.
Последнее, что осталось, это добавить запись в /etc/crontab для запуска скрипта по расписанию каждый день в 4 часа утра
# Update zimbra certificate
00 4 * * * root /scripts/ssl_update.sh
Комментариев нет:
Отправить комментарий