Установка ssl сертификата zimbra 8.6
Добрый день уважаемые читатели, у меня есть виртуальный сервер с установленным на него CentOS 7, на данном сервере работает почтовый сервер zimbra 8.6, досталась по наследству. Сегодня сотрудник обнаружил такую вещь, что при обращении на веб-консоль управления почтовым сервером и просто в личном кабинете учетной записи, выскакивает надпись с угрозой безопасности, что ваше соединение не защищено и сертификат не валиден. Дойдя до работы, я действительно увидел, что истек сертификат почты, для меня было странно, что у других веб ресурсов, был сертификат на домен, и он заканчивался в мае, а сюда почему, то поставили сертификат от startssl. Давайте я покажу как перевыпустить данный сертификат и вернуть почте защищенное подключение.
Вот как в браузере выглядит сообщение, что ваше подключение не защищено, хорошо, что можно проигнорировать данное сообщение и работать дальше.
Посмотрев сертификат безопасности, я увидел, что срок закончился 5 марта 2017 и выдан он был на конкретный адрес 3 уровня, о том, какие бывают сертификаты, читайте по ссылке слева.
Расположение сертификата
В zimbra, сам сертификат (закрытый ключ) должен лежать по пути /opt/zimbra/ssl/zimbra/commercial/commercial.key. Я для удобства, сюда же положил и открытый ключ и ключ цепочки.
Чтобы проверить цепочку, выполните команду:
В моем случае я получил ошибку, что сертификат истек.
** Verifying /opt/zimbra/ssl/zimbra/commercial/commercial.crt against /opt/zimbra/ssl/zimbra/commercial/commercial.key
Certificate (/opt/zimbra/ssl/zimbra/commercial/commercial.crt) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match.
XXXXX ERROR: Invalid Certificate: /opt/zimbra/ssl/zimbra/commercial/commercial.crt: CN = имя сервера
error 10 at 0 depth lookup:certificate has expired
Запрашиваем новый сертификат Zimbra
С проблемой мы определились, осталось перевыпустить сертификат для почтового сервера. На выбор у нас два варианты:
- Бесплатный выпуск сертификата от startssl.com
- Платный от других известных центров сертификации.
Мне в данном случае подойдет первый вариант, и я хочу сгенерировать сертификат на 3 года, делают startssl.com. Не важно, какой методы выберите вы, от вас потребуется в любом случае сделать CSR (Certificate Signing Request) запрос с вашего почтового сервера, нужен он для получения сертификата, иначе никак.
Генерация CSR запроса в Zimbra
Для генерации Certificate Signing Request у нас два варианта, первый это через консоль, второй это через веб интерфейс, я вам настоятельно рекомендую уметь оба варианта.
- Через консоль - подключаемся по ssh к вашему серверу и вводив вот такую командуЕсли пробежаться по полям, то ключевыми будет CN (Common Name) - это имя вашего ресурса, пишем тут нужный адрес. O - название компании, ST - область, L - город, С - название страны, у меня это RU./opt/zimbra/bin/zmcertmgr createcsr comm -new “/C=UA/ST=Kiev/L=Kiev/O=Company Inc/OU=Department/CN=your.domain.com”
В результате вы получите вот такой текст:
** Generating a server csr for download comm -new “/C=RU/ST=Moscow/L=Moscow/O=ANO Association for the Protection of Information of the rights of investors/OU=Department/CN=ваш домен”
** Creating /opt/zimbra/conf/zmssl.cnf...done
** Backup /opt/zimbra/ssl/zimbra to /opt/zimbra/ssl/zimbra.20170306123552
** Creating /opt/zimbra/conf/zmssl.cnf...done
** Creating server cert request /opt/zimbra/ssl/zimbra/commercial/commercial.csr....Generating a 2048 bit RSA private key
........+++
......................................................................................+++
writing new private key to '/opt/zimbra/ssl/zimbra/commercial/commercial.key'
-----
Subject does not start with '/'.
problems making Certificate Request** Saving server config key zimbraSSLPrivateKey...done.
По сути у вас создастся файл /opt/zimbra/ssl/zimbra/commercial/commercial.key, его содержимое приблизительно вот такое и сам commercial.csr.
Если вы получили ошибку Subject does not start with '/'. problems making Certificate Request, то попробуйте вот такую команду:
** Generating a server csr for download comm -new -subject /C=RU/ST=Moscow/L=Moscow/O=ANO AZIPI/OU=Department/CN=ваш домен -subjectAltNames ваш домен
** Creating /opt/zimbra/conf/zmssl.cnf...done
** Backup /opt/zimbra/ssl/zimbra to /opt/zimbra/ssl/zimbra.20170306132936
** Creating /opt/zimbra/conf/zmssl.cnf...done
** Creating server cert request /opt/zimbra/ssl/zimbra/commercial/commercial.csr...done.
** Saving server config key zimbraSSLPrivateKey...done.
- Через веб интерфейс - для кого то окажется более простым методом по генерации CSR запроса в Zambra. Переходим в Настройка > Сертификаты
Выбираем имя вашего сервера.
Заполняем нужные поля.
Скачиваем файл CSR запроса.
Перед отправкой, я обычно проверяю CSR запрос, например по этой ссылке (https://www.emaro-ssl.ru/tools/check_csr.php), просто декодер, в него вставляете содержимое CSR и нажимаете проверить.
Сертификат от startssl.com
Все CSR мы с вами получили, теперь давайте генерировать сертификат для Zimbra. Открываем startssl.com, вам потребуется зарегистрироваться на данном сервисе. Выбираем бесплатный SSL.
Далее потребуется проверка вашего домена, будет проверенно, принадлежит ли он вам.
Вводим ваш домен.
Для валидации, будет использоваться проверка по почте, учтите, что предлагаемая вам почта должна быть создана на вашем сервере.
Вот такое приходит письмо с кодом валидации.
Вводим Verification code и жмем Validation.
Все, как видите валидация вашего домена, успешна пройдена.
В итоге ваш проверенный домен появится в списке Domain Validations.
Далее идете в Certificates Wizard и нажимаете DV SSL Certificate.
Чуть ниже вставляете ваш CSR запрос, созданный ранее.
Видим, что все отлично и сертификат сгеренирован, жмем Certificate List.
Вас перебросит на список ваших сертификатов, скачиваем нужный.
Далее устанавливаем наш сертификат. Распакуйте архив, в нем вы увидите 4 архива. В моем случае меня интересует OtherServer.
Распакуйте архив OtherServe, в итоге вы получите 3 файла, рутовый сертификат, сертификат издающего центра сертификации и сам сертификат на сервер.
Далее я с помощью WinSCP подключился по ssh и скопировал сертификаты в папку /home/cert/. Далее выполняем команды, по объединению файлов
И копируем его в /opt/zimbra/ssl/zimbra/commercial/
Теперь проверим цепочку.
Результат должен быть такой:
[info]** Verifying 2_ваш_сертификат.crt against commercial.key
Certificate (2_ваш_сертификат.crt) and private key (commercial.key) match.
Valid Certificate: 2_ваш_сертификат.crt: OK[/info]
Далее устанавливаем сертификат и цепочку
Будет вот такой вывод
[info]/opt/zimbra/bin/zmcertmgr deploycrt comm 2_ваш_сертификат.crt.crt ca_bundle.crt
** Verifying 2_ваш_сертификат.crt against /opt/zimbra/ssl/zimbra/commercial/commercial.key
Certificate (2_ваш_сертификат.crt) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match.
Valid Certificate: 2_ваш_сертификат.crt: OK
** Copying 2_ваш_сертификат.crt to /opt/zimbra/ssl/zimbra/commercial/commercial.crt
** Appending ca chain ca_bundle.crt to /opt/zimbra/ssl/zimbra/commercial/commercial.crt
** Importing certificate /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt to CACERTS as zcs-user-commercial_ca...done.
** NOTE: mailboxd must be restarted in order to use the imported certificate.
** Saving server config key zimbraSSLCertificate...done.
** Saving server config key zimbraSSLPrivateKey...done.
** Installing mta certificate and key...done.
** Installing slapd certificate and key...done.
** Installing proxy certificate and key...done.
** Creating pkcs12 file /opt/zimbra/ssl/zimbra/jetty.pkcs12...done.
** Creating keystore file /opt/zimbra/mailboxd/etc/keystore...done.
** Installing CA to /opt/zimbra/conf/ca...done.[/info]
В итоге у вас /opt/zimbra/ssl/zimbra/commercial создастся файл commercial.crt Далее проверяем цепочки
Должны получить match.
Все перезапускаем почтовый сервер.
Все проверяем нашу веб морду.
Google и startssl
В виду последних событий, у Google есть претензии к WoSign и StartCom, и все сертификаты выпущенные после 21 октября 2016 года, в браузере Google Chrome 56 версии, все равно помечаются как небезопасные с пометкой NET::ERR_CERT_AUTHORITY_INVALID. Так, что советую присмотреться к проекту Let's Encrypt, одним из спонсоров, которого является Google.