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

    Общий рейтинг статьи: 5 (проголосовало 1 )
    Опубликовано:  [просмотров 2329]


    Определенно все кто имел дело с почтовым сервером Zimbra отмечают некоторую излишнюю усложненность этого комбайна который помимо функционала почтового сервера представляет собой полноценный пакет для совместной работы включающий общий задачник, календари и многое другое.

    Платой за тесную интеграцию всех сервисов представляемых пакетом является активное использование внутренней базы данных LDAP в которой хранятся все параметры системы.

    Как вы наверное поняли сертификаты используемые для шифрования подключений к web-интерфейсу и почтовому серверу единые с сертификатом шифрующим подключение к хранилищу LDAP и ошибка при установке и обновлении сертификата приводит к тому, что весь этот комбайн развалится.

    Осознали весь груз ответственности? Теперь начнем обновлять сертификаты и если все сделать правильно и согласно инструкции, то проблем не будет.

    Если 80-ый порт у вас занят nginx из поставки Zimbra, то вы не сможете обновить сертификаты Let's encrypt используя штатный nginx-плагин и на период получения новых сертификатов почтовый сервер придется остановить.

    Останавливаем zimbra.

    # /etc/init.d/zimbra stop

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

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

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

    1. Копируем сертификаты:

    # cp /etc/letsencrypt/live/mail.deepeon.com/* /opt/zimbra/ssl/letsencrypt/
    # chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/
    # cd /opt/zimbra/ssl/letsencrypt/

    В конец файла 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

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

    # 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

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

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

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

    # /etc/init.d/zimbra restart


    Обсуждение статьи
    Вопрос нашего пользователяна мой взгляд корректнее будет использовать ./letsencrypt-auto renew
    Ответ на комментарийДа. Вы правы, при обновлении лучше именно так.
    Вопрос нашего пользователяПолучается что для получения и продления сертификата используется одна и таже команда "certbot certonly --standalone -d mail.deepeon.com" ???
    Ответ на комментарийВ этом случае будет диалог, что делать. Новый или обновить старый, и так как у нас standalone-режим, то нам автоматизация и не нужна.

    Ваш комментарий: