letsencrypt для zimbra - автопродление (только для standalone)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

letsencrypt для zimbra - автопродление

Сообщение kasak »

Привет любимый юниксфорум!
Я заметил что даже в официальной документации к 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"
Первые две строчки выключают встроенный в зимбру nginx чтобы certbot мог запустить свой сервер и обновить сертификат.
Третья сточка обновляет сертификат.

Поскольку 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
где example.com - интересующий домен. если их несколько то надо несколько раз указать -d example.com -d www.example.com

Во время первого запроса сертификата система спросит email адрес администратора.

That's all, folks!

Статья была отредактирована 1.10.2021 поскольку certbot начал предоставлять не только chain.pem но и fullchain.pem. Кроме того сертификат identrust устарел.
Последний раз редактировалось kasak 01.10.2021 19:08, всего редактировалось 1 раз.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
hm24com
Сообщения: 2
ОС: Ubuntu Linux

Re: letsencrypt для zimbra - автопродление

Сообщение hm24com »

У вас используется identrust.pem, но вы не написали что должно быть в этом файле. У меня есть более подробная инструкция, но в целом можно и вашей пользоваться.
https://help-me-24.com/blog/install-lets-en...-cert-in-zimbra
Спасибо сказали:
Ответить