Установка и обновление сертификата Let's encrypt для почтового сервера Zimbra

  • Tutorial
В прошлый статьях нас попросили рассказать об установке и обновлении сертификатов Let’s Encrypt.

Let’s Encrypt — центр сертификации, предоставляющий бесплатные криптографические сертификаты X.509 для TLS шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован.

image

Выдача Let's Encrypt


Запрос на Let's Encrypt желательно выполнить на сервере с Zimbra, чтобы получить сертификат SSL, CA Intermediate и Private Key. Для этого необходимо остановить службу почтового сервера (порты 80 и 443):

1. Останавливаем службы.

zmproxyctl stop
zmmailboxdctl stop


2. Загружаем пакет Let's Encrypt и заходим в каталог letencrypt:

Примечание. В RedHat и CentOS 6 перед установкой вам нужно будет включить репозиторий EPEL.

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt




3. Запустите автоматический скрипт Let's Encrypt, используйте параметр certonly.

root@zimbra86:~/tmp/letsencrypt# ./letsencrypt-auto certonly --standalone

Сценарий настроит временный WEB-сервер для проверки и выдачи сертификата, при необходимости соглашаясь с лицензией и сообщив электронную почту:



Если вам нужно иметь несколько имен хостов на одном и том же SSL, то вместо этого следует использовать протокол Multi-SAN, SSL, где -d — ваши домены:

root@zimbra86:~/tmp/letsencrypt# ./letsencrypt-auto certonly --standalone -d xmpp.example.com -d conference.example.com

4. Если все будет хорошо с проверкой, то сертификат (сертификат + открытый ключ + цепочка) будет выпущен в формате «/etc/letencrypt/live/address/»:



5. На этом этапе вы можете снова запустить сервис и начать установку подписанного сертификата. Чтобы реализовать сертификат в Zimbra вам нужно дополнить цепочку «root CA». Создайте файл с «root CA» и строками файла «fullchain1.pem»)

root CA: (https://www.identrust.com/certificates/trustid/root-download-x3.html)

6. После того, как файл был создан, проверьте файлы с помощью следующей команды:

/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem CHAIN_COMPLETA.pem

7. Выполните проверку, создайте резервные копии текущих сертификатов (настоятельно рекомендуется) и скопируйте секретный ключ в каталог «/opt/zimbra/ssl/zimbra/commercial» с именем «commercial.key»:

cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d")
cp privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key


8. Выполните установку сертификата и перезапустите службы для проверки развертывания

/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem

9. Правильная установка сертификата:



10. Перезагрузите сервис

zmcontrol restart

Обновление сертификатов



1. Останавливаем Zimbra.

/etc/init.d/zimbra stop

2. Получаем новые сертификаты и запускаем почтовый сервер.

certbot certonly --standalone -d mail.example.com
/etc/init.d/zimbra start


3. Полученные сертификаты потребуется загрузить в Zimbra. Копируем сертификаты:

cp /etc/letsencrypt/live/zimbra86.zimbra.io/* /opt/zimbra/ssl/letsencrypt/
chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/
cd /opt/zimbra/ssl/letsencrypt/


4. В конец файла chain.pem добавляем промежуточный сертификат Let's encrypt:

-----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-----


Если вы не добавите промежуточный сертификат, то получите ошибку на этапе проверки:

ERROR: Unable to validate certificate chain: cert.pem: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
error 2 at 1 depth lookup:unable to get issuer certificate


5. Проверяем установленные ключи и сертификаты:

su zimbra
$ cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
$ /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem

6. Если проверка прошла успешно, то устанавливаем обновленные сертификаты:

$ /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem

7. Для применения установленного сертификата перезапустите все сервисы Zimbra:

# /etc/init.d/zimbra restart

Готово!

Zimbra

67,00

Zimbra и модульное расширение Zextras Suite

Поделиться публикацией
Комментарии 10
    0
    Процесс выдачи сертификатов полностью автоматизирован.

    И далее полтора десятка ручных команд, да еще и с прерыванием сервиса. :)

      0
      Не знаю, как на новой Zimbra. На старой (7.1.3) вполне деплоились сертификаты налету. Причём, что интересно, от Comodo — ок, а вот GeoTrust так не подхватился.
        0
        Кстати, в техцентре (wiki) Zimbra есть ссылка на скрипт, который это делает автоматически.
        wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate
        github.com/JimDunphy/deploy-zimbra-letsencrypt.sh

        Зануда моде: автор пропустил очень важный кусок создания commecial_ca.crt, который по моему опыту вызывает самый затык у очень многих админов.
          0
          Исправим))
            0

            Ну да, тут у автора неполный перевод статьи с wiki.
            А так конечно же это всё скриптуется, только почему-то не сотрудниками компаний, которые потом за поддержку Zimbra денег хотят. :)

          0
          В боевых скриптах стоит использовать опции цертбота pre-hook и post-hook, которые исполняют соответствующие скрипты только если сертификат требует обновления. В pre-hook останавливается zimbra, в post-hook создаются и деплоятся цепочки сертификатов и запускается zimbra
            0
            А на каком порту он поднимает временный сервер? 443? Как я понимаю, http(s) запросы могут до почтового сервера вообще не доходить — дропаться где-нибудь на этапе роутера или вообще заворачиваться на другой сервер. В этом случае только ручками?
              0

              Для получения сертификата совершенно не обязательно использовать тот же самый сервер, на котором вы будете его использовать (если, конечно, вы не хотите в каком-нибудь tpm закрытый ключ хранить :)). Можете получать на том, куда у вас приходит http, и потом копировать куда надо. Насколько это будет "ручками", зависит от вашего желания писать скрипты для автоматизации процесса (с учетом срока действия сертификата let's encrypt оно практически неминуемо появится).

                0
                Как раз таким вариантом и пользуюсь. И очень он мне не нравится — все жду когда же что-то более удобное придумают:)
              0
              Как там с wildcard-сертификатами? Будут ли текущие клиенты совместимы в январе, или потом еще ждать?

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое