Я заметил что даже в официальной документации к zimbra https://wiki.zimbra.com/wiki/Installing_a_L...SSL_Certificate
не сказано как автоматизировать процесс обновления сертификата для неё.
Хочу предложить очень простой способ, полностью основанный на этой же документации.
На самом деле опытному админу всё это нафиг не нужно, но вдруг кому-то сгодится.
Обратите внимание речь идёт о standalone версии!
Вот собственно сам скриптик:
Код: Выделить всё
su -l zimbra -c "zmproxyctl stop"
su -l zimbra -c "zmmailboxdctl stop"
certbot renew
cp -rL /etc/letsencrypt/live/somesite.ru ./
chmod -R a+w ./somesite.ru
cp somesite.ru/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
su zimbra -c "/opt/zimbra/bin/zmcertmgr deploycrt comm somesite.ru/cert.pem somesite.ru/fullchain.pem"
su -l zimbra -c "zmcontrol restart"
Третья сточка обновляет сертификат.
Поскольку certbot хранит все сертификаты в папке archive, а в live он делает просто ссылочки, нам нужно скопировать live так, чтобы ссылочки стали реальными файлами. опция L нам в этом поможет.
Далее нужно дать полный доступ к папке с сертификатами. Делается это потому что зимбровский zmcertmgr очень любит зачем-то оставлять бекапы старого сертификата в файле cert.pem.orig.
Следующие два шага установят сначала новый ключ а потом новый сертификат. Последний шаг - перезапуск зимбры.
В таком виде в каком скрипт написан он конечно рассчитан на запуск вручную.
Можно легко переделать это для запуска через cron, указав абсолютные пути для копирования папки с сертификатами, или вообще никуда не копировать а работать прямо в /etc/letsencrypt/live/
Но я не рекомендую так делать, потому что перезапуск зимбры весьма длительный и трудоёмкий процесс. Даже на относительно новом ксеончике это делается довольно медленно. Зачем оставлять людей без почты пусть даже и на 5 минут впустую?
Вам в любом случае на электронную почту придёт сообщение что сертификат истекает, тогда и запустите скрипт вручную. Разок в 3 месяца этим можно занятся.
Запускать можно через sudo в домашней директории пользователя.
Так же обратите внимание что я использую certbot. Ибо зачем городить огород со скачиванием каких-либо скриптов (letsencrypt-auto), если certbot можно легко установить из родного пакетного менеджера любой системы.
Так же обратите внимание что данный скрипт можно феерично превратить в скрипт для автоматической установки сертификатов letsencrypt туда, где их ещё нет совсем.
Для этого меням третью строчку на
Код: Выделить всё
certbot certonly --standalone -d example.com
Во время первого запроса сертификата система спросит email адрес администратора.
That's all, folks!
Статья была отредактирована 1.10.2021 поскольку certbot начал предоставлять не только chain.pem но и fullchain.pem. Кроме того сертификат identrust устарел.