Найти в Дзене

Как выпустить сертификат Let’s Encrypt SSL для Zimbra вручную

Начали возникать проблемы при выпуске новых сертификатов, после того как истек срок действия корневого сертификата IdenTrust DST Root CA X3 от центра Let’s Encrypt истек 30 сентября 2021 года. Рассмотрим, как решить эту проблему. Что такое корневой сертификат Все SSL-сертификаты в интернете выдаются центром сертификации, которым доверяют устройства. Каждое устройство знает, какому сертификату доверять, потому что хранит список корневых сертификатов. Хранилища корневых сертификатов встроены в ОС и обычно обновление корневых сертификатов включено в процесс обновления ОС. Корневой сертификат, который вызвал проблему для миллиона пользователей ― IdentTrust DST Root CA X3 и его срок действия закончился. С этого момента у всех браузеров, которые доверяли сертификатам на основе DST Root CA X3, проблема с проверкой сертификата Let’s Encrypt. Почему Let’s Encrypt сертификаты перестали работать выборочно Хотя SSL-сертификаты Let’s Encrypt подтверждались за счет корневого сертификата IdenTrust D
Оглавление

Начали возникать проблемы при выпуске новых сертификатов, после того как истек срок действия корневого сертификата IdenTrust DST Root CA X3 от центра Let’s Encrypt истек 30 сентября 2021 года. Рассмотрим, как решить эту проблему.

Что такое корневой сертификат

Все SSL-сертификаты в интернете выдаются центром сертификации, которым доверяют устройства. Каждое устройство знает, какому сертификату доверять, потому что хранит список корневых сертификатов. Хранилища корневых сертификатов встроены в ОС и обычно обновление корневых сертификатов включено в процесс обновления ОС. Корневой сертификат, который вызвал проблему для миллиона пользователей ― IdentTrust DST Root CA X3 и его срок действия закончился. С этого момента у всех браузеров, которые доверяли сертификатам на основе DST Root CA X3, проблема с проверкой сертификата Let’s Encrypt.

Почему Let’s Encrypt сертификаты перестали работать выборочно

Хотя SSL-сертификаты Let’s Encrypt подтверждались за счет корневого сертификата IdenTrust DST Root CA X3, он был не единственным. У Let’s Encrypt есть новый промежуточный сертификат ISRG Root X1, но про него не знают старые версии прошивок. Таким образом, на новых устройствах сайты с Let’s Encrypt нормально открываются, а на старых появляется ошибка «Подключение не защищено».

Источник изображения https://letsencrypt.org/2020/12/21/extending-android-compatibility.html
Источник изображения https://letsencrypt.org/2020/12/21/extending-android-compatibility.html

Использование промежуточного сертификата

Сертификаты от Let’s Encrypt выпускаются с помощью программы certbot. Рекомендуется использовать snap версию certbot, поскольку она поддерживает параметр --preferred-chain «ISRG Root X1», необходимый для работы с Zimbra.

Если у вас установлена не snap версия certbot или не одна из последних версий, то возможно команда выпуска сертификата с параметром --preferred-chain «ISRG Root X1» будет выполняться со следующей ошибкой

certbot: error: unrecognized arguments: --preferred-chain ISRG Root X1

Чтобы исправить данную ошибку, необходимо обновить certbot до актуальной версии. Если обновление не помогло или просто не обновляется, то удаляем обычный certbot

# sudo apt remove –y certbot python3-certbot-nginx python3-certbot-apache

Далее устанавливаем snapd и certbot

# sudo install snapd

# sudo snap install certbot –classic

Проверим версию

# sudo certbot --version

Выпускаем сертификат

После того, как certbot установлен, перейдем к выпуску сертификата. Однако перед этим нужно оставить службу Zimbra, поскольку вместе с Zimbra работает nginx сервер, что может препятствовать работе certbot.

От имени root, запускаем

# service zimbra stop

ждем пока остановится Zimbra и для получения сертификата выполняем команду

# certbot certonly --standalone -d mail.domain.com

Это нам даст наш сертификат и сохранит их по пути

/etc/letsencrypt/live/mail.domain.com

Если посмотреть эту директорию, то в ней будет 4 файла. А точнее ссылки на другие файлы, в названии которых есть цифры. Эти цифры имеют смысл порядковых номеров, то есть, если, например, сейчас последний файл имеет имя cert8.pem, при следующем запуске появиться файл с именем cert9.pem. Таким образом оригиналы файлов хранятся здесь

/etc/letsencrypt/archive/mail.domain.com/cert8.pem /etc/letsencrypt/archive/mail.domain.com/chain8.pem /etc/letsencrypt/archive/mail.domain.com/fullchain8.pem /etc/letsencrypt/archive/mail.domain.com/privkey8.pem

Сертификаты получены. Далее необходимо проверить что все настроено правильно.

SSL файлы хранятся в следующей папке

/opt/zimbra/ssl/letsencrypt

Очистим эту папку от старых файлов, удалив их

# rm -f /opt/zimbra/ssl/letsencrypt/*

# cp /etc/letsencrypt/archive/mail.domain.com/cert8.pem /opt/zimbra/ssl/letsencrypt/cert.pem

# cp /etc/letsencrypt/archive/mail.domain.com/chain8.pem /opt/zimbra/ssl/letsencrypt/chain.pem

# cp /etc/letsencrypt/archive/mail.domain.com/fullchain8.pem /opt/zimbra/ssl/letsencrypt/fullchain.pem

# cp /etc/letsencrypt/archive/mail.domain.com/privkey8.pem /opt/zimbra/ssl/letsencrypt/privkey.pem

Обратите внимание, при копировании файлов меняется их имя, удаляются цифры.

Сменим владельца для файлов

# chown -Rf zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*

Из под пользователя root все действия выполнены, теперь переключимся на пользователя Zimbra

# su zimbra

Сменим директорию

# cd /opt/zimbra/ssl/letsencrypt/

Файлы Let’s Encrypt почти готовы к использованию, за одним исключением. Let’s Encrypt не добавил свой корневой сертификат в файл chain.pem. Найти этот сертификат можно на офф сайте Let’s Encrypt https://letsencrypt.org/certificates/ находим и скачиваем txt файл для ISRG Root X1 https://letsencrypt.org/certs/isrgrootx1.txt. Открываем и копируем все содержимое в конец файла chain.pem. Для этого откроем его с помощью редактора nano

# nano chain.pem

Сохраняем (CTRL + o) и закрываем (CTRL + x) файл.

Теперь все готово для проверки и разворачиванию сертификата. Необходимо настроить приватный ключ, который используем для генерации commercial.key для Zimbra. На самом деле это делается простым копированием

# rm -f /opt/zimbra/ssl/zimbra/commercial/commercial.key

# 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

# exit

Из под root перезапустим службу Zimbra

# service zimbra restart

Если все сделано правильно, то сертификат для Zimbra успешно выпущен и браузер больше не будет ругаться на незащищенное соединение.

#zimbra #ssl #linux #серверное администрирование #администрирование