Замена SSL-сертификата в Zimbra

 

Начиная с версии Zimbra 8.7 и выше, сертификат обязательно должен содержать FQDN сервера, вида: mail.example.ru, т.е. если сертификат содержит только *.example.ru, то при запуске Zimbra будет ошибка:

Unable to start TLS: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed when connecting to ldap master.

Для решения ошибки нужно отключить авторизацию пользователей в Zimbra LDAP + SSL командой:

# su - zimbra

# zmlocalconfig -e ldap_starttls_supported=0

# zmcontrol restart

Однако данная команда отключит STARTTLS на всем сервисе, что небезопасно, поэтому после перевыпуска сертификата, его необходимо будет поменять на сервере и активировать ldap_starttls_supported командой:

# su - zimbra

# zmlocalconfig -e ldap_starttls_supported=1

# zmcontrol restart

 

про настройки:

 

https://wiki.zimbra.com/wiki/TLS/STARTTLS_Localconfig_Values

 

https://wiki.zimbra.com/wiki/SecureConfiguration

Решение:

https://forums.zimbra.org/viewtopic.php?f=15&t=56276&start=70

https://mangolassi.it/topic/12999/zimbra-failing-to-start/10

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-

 

Внимание! После обновления SSL-сертификата у юзеров будут проблемы с подключением к серверу через почтовые клиенты,почтовые клиенты будут ругаться на измененный SSL-сертификат. Поэтому смену сертификата надо согласовать с офисными админами,для решения проблемы надо подтвердить изменение и перезапустить клиент.

Вообще обновить сертификат можно через GUI https://habrahabr.ru/company/zimbra/blog/341996/, но выдает ошибку.

 

Для замены ssl-серта у zimbra сервера необходимо:

-Если версия zimbra 8.6 и ниже, то все действия выполнять от рута:

# sudo -s

-Если версия zimbra 8.7 и выше, то все действия выполнять от пользователя zimbra:

# sudo -s

# su - zimbra

-Рассмотрим замену сертификата для Zimbra 8.6:

# sudo -s

-Делаем резервную копию текущего сертификата(например в домашнюю директорию):

# cp  /opt/zimbra/ssl/zimbra/commercial/* /home/tmp/

-Создаем скрипт для замены сертификата (change_ssl.sh) со следующим содержимым:

# vi change_ssl.sh

 

#!/bin/bash

 

cd /opt/zimbra/ssl/zimbra/commercial/

 

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial.crt

-----BEGIN CERTIFICATE-----

здесь ключ выданного нам сертификата

-----END CERTIFICATE-----

_EOF_

 

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt

-----BEGIN CERTIFICATE-----

здесь указываются цепочки из файла *.ca-bundle

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

здесь указываются цепочки из файла *.ca-bundle

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

здесь указываются цепочки из файла *.ca-bundle

-----END CERTIFICATE-----

_EOF_

 

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial.key

-----BEGIN RSA PRIVATE KEY-----

здесь указываем private key из файла *.key

-----END RSA PRIVATE KEY-----

_EOF_

 

/opt/zimbra/bin/zmcertmgr verifycrt comm commercial.key commercial.crt

/opt/zimbra/bin/zmcertmgr deploycrt comm commercial.crt commercial_ca.crt

 

Если у нас нормальный SSL-сертификат, то проблем не будет, сохраняем скрипт и запускаем его,

если у нас Let’s Encrypt’s то в файл /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt необходимо будет добавить сертификат "DST Root CA X3" скачав его на странице https://www.identrust.com/support/downloads в разделе TrustID X3

Тогда скрипт change_ssl.sh будет выглядеть следующим образом:

#!/bin/bash

cd /opt/zimbra/ssl/zimbra/commercial/

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial.crt
-----BEGIN CERTIFICATE-----
здесь ключ выданного нам сертификата
-----END CERTIFICATE-----
_EOF_

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt
-----BEGIN CERTIFICATE-----
здесь указываются цепочки из файла ca.cer
-----END CERTIFICATE-----
-----BEGIN TRUSTED 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
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQMBwwCgYIKwYBBQUHAwEMDkRT
VCBSb290IENBIFgz
-----END TRUSTED CERTIFICATE-----
_EOF_

cat <<\_EOF_ > /opt/zimbra/ssl/zimbra/commercial/commercial.key
-----BEGIN RSA PRIVATE KEY-----
здесь указываем private key из файла *.key
-----END RSA PRIVATE KEY-----
_EOF_

/opt/zimbra/bin/zmcertmgr verifycrt comm commercial.key commercial.crt
/opt/zimbra/bin/zmcertmgr deploycrt comm commercial.crt commercial_ca.crt

-Далее проверяем, что скрипт исполняемый и запускаем его:

# chmod 700 change_ssl.sh

# ./change_ssl.sh

Вывод должен быть похож на:

** Verifying cert.pem against privkey.pem

Certificate (cert.pem) and private key (privkey.pem) match.

Valid Certificate: cert.pem: OK

-Читаем вывод команд, если всё хорошо, то логинемся под пользователем zimbra:

# su - zimbra

и делаем рестарт:

# zmcontrol restart

На этом замена SSL-сертификата в Zimbra завершена.

 

 

Материалы:

http://pakege.com/2017/03/15/zimbra-8-6-lets-encrypt-cert/

http://stupid.hk/wordpress/?cat=2