Останавливаем службы Zimbra
su zimbra
zmproxyctl stop
zmmailboxdctl stop
Загружаем с git letsencrypt
su root
yum -y установить git epel-release
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
Получаем сертификаты
./letsencrypt-auto certonly --standalone -d mail.your_domain1.ua -d mail.your_domain2.ua -d mail.your_domain3.ua
Отвечаем на вопросы
- Emergency email - your_mail@example.ua
- Yes/No - Y
Сертификаты генирируются по пути:
- /etc/letsencrypt/live/mail.your_domain.ua/fullchain.pem
- /etc/letsencrypt/live/mail.your_domain.ua/privkey.pem
Загружаем корневой и промежуточный сертификат
- cd /etc/letsencrypt/live/mail.your_domain.ua/
- wget https://letsencrypt.org/certs/isrgrootx1.pem.txt
- wget https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt
Копируем и даем доступ для zimbra
su root
- cd /etc/letsencrypt/live/mail.your_domain.ua/
- cat isrgrootx1.pem.txt letsencryptauthorityx3.pem.txt chain.pem > combined.pem
- mkdir /opt/zimbra/ssl/letsencrypt
- cp /etc/letsencrypt/live/mail.your_domain.ua/* /opt/zimbra/ssl/letsencrypt/
- chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
- ls -la /opt/zimbra/ssl/letsencrypt/
-
-
-
Устанавливаем сертификаты и проверяем валидацию
- cd /opt/zimbra/ssl/letsencrypt/
- /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem combined.pem
-
-
- cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
- /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem combined.pem
-
- zmcontrol restart
Недавно вышеперечисленные проверки начали сбоить с ошибкой: (Исправление, представленное Дмитрием Гусаковым)
- [zimbra@mail letsencrypt]$ /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem combined.pem
- ** Verifying 'cert.pem' against '/opt/zimbra/ssl/zimbra/commercial/commercial.key'
- Certificate 'cert.pem' and private key '/opt/zimbra/ssl/zimbra/commercial/commercial.key' match.
- ** Verifying 'cert.pem' against 'combined.pem'
- ERROR: Unable to validate certificate chain: cert.pem: CN = mail.mail.your_domain.ua
- error 20 at 0 depth lookup:unable to get local issuer certificate
-
- #OR
-
- [zimbra@mail letsencrypt]$ /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem combined.pem
- ** Verifying 'cert.pem' against 'privkey.pem'
- Certificate 'cert.pem' and private key 'privkey.pem' match.
- ** Verifying 'cert.pem' against 'combined.pem'
- ERROR: Unable to validate certificate chain: cert.pem: C = US, O = Let's Encrypt, CN = R3
- error 2 at 1 depth lookup:unable to get issuer certificate
В указанном выше случае вы можете решить эту проблему, изменив шаги для создания файла comcombаd.pem в
- cd /etc/letsencrypt/live/mail.your_domain.ua/
- wget https://letsencrypt.org/certs/lets-encrypt-r3.pem
- cat isrgrootx1.pem.txt lets-encrypt-r3.pem chain.pem > combined.pem
- cp /etc/letsencrypt/live/mail.your_domain.ua/* /opt/zimbra/ssl/letsencrypt/
- chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
После этого попробуйте снова выполнить шаг verifycrt, и на этот раз он должен сработать.
Откройте https://mail.your_domain.ua:7071/zimbraAdmin/ и убедитесь, что сертификат вместе с корневым "ISRG Root X1" и промежуточным "Lets Encrypt Authority X3" подходит правильно
Тест сертификатов:
- openssl s_client -starttls smtp -connect your_domain.ua:25 -showcerts
- openssl s_client -connect your_domain.ua:465 -showcerts
- openssl s_client -connect your_domain.ua:443 -showcerts
- openssl s_client -connect your_domain.ua:993 -showcerts
- openssl s_client -starttls imap -connect your_domain.ua:143 -showcerts
Вы также можете протестировать настройку сертификата, используя https://www.ssllabs.com/ssltest/. Если у старого варианта Let-encrypt root / intermediate истекает срок действия, тогда zimbra может правильно открываться в некоторых браузерах (или в режиме инкогнито), давая ошибку в других модах. Такие проблемы можно определить с помощью теста SSL labs. Затем они могут быть исправлены путем повторной загрузки сертификатов Let's-encrypt с https://letsencrypt.org/certificates/ После повторной загрузки обновленных сертификатов необходимо сделать:
- cp /etc/letsencrypt/live/mail.your_domain.ua/* /opt/zimbra/ssl/letsencrypt/
- chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
-
Выполните шаги zmcertmgr verifycrt и deploycrt.
Чтобы настроить Zimbra на прослушивание порта 80 для принудительного перенаправления HTTPS:
- su - zimbra
- ~/libexec/zmproxyconfig -e -w -o -a 8080:80:8443:443 -x https -H `zmhostname`
- zmprov ms `zmhostname` zimbraReverseProxyMailMode redirect
-
-
Обратите внимание, что более ранний метод простого использования « zmtlsctl redirect » больше не доступен в последних версиях. Следовательно, требуются вышеуказанные шаги
Конфигурация продления SSL-сертификата через crontab
Создаем скрипт
vim /root/renew-certificate.sh
- su - zimbra -c "zmcontrol stop"
- /root/letsencrypt/letsencrypt-auto renew
- cp /etc/letsencrypt/live/mail.your_domain.ua/privkey.pem /opt/zimbra/ssl/letsencrypt/
- cp /etc/letsencrypt/live/mail.your_domain.ua/cert.pem /opt/zimbra/ssl/letsencrypt/
- cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
- chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
- su - zimbra -c "cd /opt/zimbra/ssl/letsencrypt/; /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem combined.pem"
- su - zimbra -c "zmcontrol start"
Даем права
chmod +x /root/renew-certificate.sh
Добавляем в крон
crontab -e
10 5 * * 0 /root/renew-certificate.sh
где вместо 10 и 5 используйте свое значение от 5 до 55 для минут (первое число) и свое значение от 1 до 5 для часа (второе число)
Источник: https://www.sbarjatiya.com/notes_wiki/index.php/CentOS_7.x_Install_lets_encrypt_automated_SSL_certificate_in_Zimbra |