Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

 
Reply to this topic Start new topic
> letsencrypt для zimbra - автопродление, только для standalone
kasak
bookmark
gyfbbdvkffmrljmmmwd
Mar 12 2017, в 12:22
Сообщение #1


Коренной житель
Иконка группы

Сообщений: 879

Вставить имя   :   Цитата

ОС: OpenBSD

Группа: Участники

Автор темы
Привет любимый юниксфорум!
Я заметил что даже в официальной документации к 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
cat identrust.pem >> somesite.ru/chain.pem
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/chain.pem"
su -l zimbra -c "zmcontrol restart"


Первые две строчки выключают встроенный в зимбру nginx чтобы certbot мог запустить свой сервер и обновить сертификат.
Третья сточка обновляет сертификат.

Поскольку certbot хранит все сертификаты в папке archive, а в live он делает просто ссылочки, нам нужно скопировать live так, чтобы ссылочки стали реальными файлами. опция L нам в этом поможет.

Далее нужно дать полный доступ к папке с сертификатами. Делается это потому что зимбровский zmcertmgr очень любит зачем-то оставлять бекапы старого сертификата в файле cert.pem.orig.

Шестая строчка добавляет в цепочку сертификат identrust. Если посмотреть настоящую цепочку сертификатов, то увидим, что корневой центр letsencrypt подписан как раз таки этим сертификатом. certbot его в файл chain почему-то сам не добавляет
а zmcertmgr ругается если этого не сделать. identrust.pem имеет вид:

Spoiler:
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----

и берется из: https://www.identrust.com/certificates/trus...ownload-x3.html

Следующие два шага установят сначала новый ключ а потом новый сертификат. Последний шаг - перезапуск зимбры.

В таком виде в каком скрипт написан он конечно рассчитан на запуск вручную.
Можно легко переделать это для запуска через 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!


--------------------
Linux debian 4.0.0-1-686-pae #1 SMP Debian 4.0.2-1 (2015-05-11) i686 GNU/Linux


Спасибо сказали:
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25th March 2017 - в 10:39




Rating@Mail.ru