В один, не очень прекрасный день, заставили нас перейти со ставшего уже родным Alt-n mDaemon на Zimbra Collaboration Suite.
Все бы ничего, и холивар mDaemon vs. Zimbra оставим за рамками статьи, сам переход прошел довольно плавно, но пользователи стали тревожиться по поводу предупреждений браузеров и почтовых клиентов о недоверенном сертификате. Так как почтовый обмен осуществляется исключительно внутри корпорации, mDeamon имел сертификат, выданный удостоверяющим центром AD, поэтому там все было гладко. И тогда решил я и Zimbra выдать сертификат от ADCS.
Для начала попробовал через стандартный диалог web-интерфейса. Но там даже со стандартными настройками выходит ошибка.
Правда, если поле Дополнительное имя субъекта удалить, то генерация запроса проходит нормально.
Далее, либо скачиваем файл commercial.csr, либо заходим в консоль SSH, под учеткой zimbra и смотрим его содержимое:
cat /opt/zimbra/ssl/zimbra/commercial/commercial.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIC8zCCAdsCAQAwZDELMAkGA1UEBhMCUlUxCzAJBgNVBAgMAjUyMQ0wCwYDVQQH
<skip>
IYTKJfkDPOm5XO4pQBtufMMQnmwUrnqcfrt8LUfCsjWwiImfcUaG
-----END CERTIFICATE REQUEST-----
Копируем его содержимое и переходим в веб-интерфейс удостоверяющего центра Active Directory. Тут нужно упомянуть, что с этим интерфейсом нормально может работать только Internet Explorer.
Zimbra умеет работать только с base-64 сертификатами, поэтому выбираем соответствующие опции.
Нажимаем «Запроса сертификата», далее «Расширенный запрос сертификата», затем «Выдать запрос, используя base-64 шифрованный файл PKCS #10, или выдать запрос обновления, используя base-64 шифрованный файл PKCS #7.»
В первое поле вставляем текст запроса, шаблон выбираем «Веб-сервер».
После нажатия на кнопку «Выдать», нам данный сертификат выпускается и можно его загрузить (в BASE-64 виде, конечно же).
С помощью web-интерфейса zimbra мне так и не удалось установить данный сертификат, поэтому делаем это с помощью консоли.
Любым способом размещаем полученный сертификат и корневой сертификат УЦ в каталоге /opt/zimbra/ssl/zimbra/commercial
Теперь проверяем сертификат на валидность командой:
[zimbra@zimbra commercial]$ zmcertmgr verifycrt comm commercial.key certnew.cer CA.cer
** Verifying 'certnew.cer' against 'commercial.key'
Certificate 'certnew.cer' and private key 'commercial.key' match.
** Verifying 'certnew.cer' against 'CA.cer'
Valid certificate chain: certnew.cer: OK
[zimbra@zimbra commercial]$
Если все ОК, то внедряем сертификат:
[zimbra@zimbra commercial]$ zmcertmgr deploycrt comm certnew.cer CA.cer
** Fixing newlines in 'certnew.cer'
** Fixing newlines in 'CA.cer'
** Verifying 'certnew.cer' against '/opt/zimbra/ssl/zimbra/commercial/commercial.key'
Certificate 'certnew.cer' and private key '/opt/zimbra/ssl/zimbra/commercial/commercial.key' match.
** Verifying 'certnew.cer' against 'CA.cer'
Valid certificate chain: certnew.cer: OK
** Copying 'certnew.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial.crt'
** Copying 'CA.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt'
** Appending ca chain 'CA.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial.crt'
** Importing cert '/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt' as 'zcs-user-сommercial_ca' into cacerts '/opt/zimbra/common/lib/jvm/java/jre/lib/security/cacerts'
** NOTE: restart mailboxd to use the imported certificate.
** Saving config key 'zimbraSSLCertificate' via zmprov modifyServer zimbra.domain.local...ok
** Saving config key 'zimbraSSLPrivateKey' via zmprov modifyServer zimbra.domain.local...ok
** Installing ldap certificate '/opt/zimbra/conf/slapd.crt' and key '/opt/zimbra/conf/slapd.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/slapd.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/slapd.key'
** Creating file '/opt/zimbra/ssl/zimbra/jetty.pkcs12'
** Creating keystore '/opt/zimbra/mailboxd/etc/keystore'
** Installing mta certificate '/opt/zimbra/conf/smtpd.crt' and key '/opt/zimbra/conf/smtpd.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/smtpd.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/smtpd.key'
** Installing proxy certificate '/opt/zimbra/conf/nginx.crt' and key '/opt/zimbra/conf/nginx.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/nginx.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/nginx.key'
** NOTE: restart services to use the new certificates.
** Cleaning up 3 files from '/opt/zimbra/conf/ca'
** Removing /opt/zimbra/conf/ca/ca.key
** Removing /opt/zimbra/conf/ca/ca.pem
** Removing /opt/zimbra/conf/ca/d8183cc3.0
** Copying CA to /opt/zimbra/conf/ca
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.key' to '/opt/zimbra/conf/ca/ca.key'
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.pem' to '/opt/zimbra/conf/ca/ca.pem'
** Creating CA hash symlink 'd8183cc3.0' -> 'ca.pem'
** Creating /opt/zimbra/conf/ca/commercial_ca_1.crt
** Creating CA hash symlink '0c6ba62c.0' -> 'commercial_ca_1.crt'
[zimbra@zimbra commercial]$
Просмотреть примененный сертификат можно командой
zmcertmgr viewdeployedcrt
После всего перезапускаем службы zimbra
zmcontrol restart
Проверяем результат:
Предупреждений нет, сервис виден, как валидный. Что и требовалось!
Abyss777
Если вы вдруг установили CA без веб-интерфейса, то можно выполнить запрос из консоли:
certreq -submit -attrib "CertificateTemplate:WebServer" commercial.csr
Vigogne Автор
Отличное уточнение, спасибо!