Рубрика: ssl

Zimbra. Установка сертификата Comodo SSl.

Используем командную строку

  • 1. Получаем от Comodo файлы в формате crt, либо в zip архиве. Или качаем их по следующей ссылке —https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/620/1/
  • 2. Помещаем их на Zimbra сервер. Должны быть вот такие файлы:
    • AddTrustExternalCARoot.crt
    • COMODORSAAddTrustCA.crt
    • COMODORSADomainValidationSecureServerCA.crt
    • my_domain_com.crt files
  • 3. Объединяем CA сертификаты в один файл.
 cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > /tmp/commercial_ca.crt
  • 4. Копируем SSL сертификат в /tmp/commercial.crt.
 cp my_domain_com.crt /tmp/commercial.crt
  • 5. Проверяем полученные сертификаты на соответствие:
/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /tmp/commercial.crt /tmp/commercial_ca.crt 
** Verifying /tmp/commercial.crt against /opt/zimbra/ssl/zimbra/commercial/commercial.key
Certificate (/tmp/commercial.crt) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match.
Valid Certificate: /tmp/commercial.crt: OK
  • 6. Прописываем сертификат в систему.
/opt/zimbra/bin/zmcertmgr deploycrt comm /tmp/commercial.crt /tmp/commercial_ca.crt 
** Verifying /tmp/commercial.crt against /opt/zimbra/ssl/zimbra/commercial/commercial.key
Certificate (/tmp/commercial.crt) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match.
Valid Certificate: /tmp/commercial.crt: OK
** Copying /tmp/commercial.crt to /opt/zimbra/ssl/zimbra/commercial/commercial.crt
** Appending ca chain /tmp/commercial_ca.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.
  • 7. Перезапускаем сервис.
zmcontrol restart

Использование веб-интерфейса (Admin Console)

Получаем от Comodo следующие файлы:

    • AddTrustExternalCARoot.crt
    • COMODORSAAddTrustCA.crt
    • COMODORSADomainValidationSecureServerCA.crt
    • my_domain_com.crt files

Переходим по пунктам Home > Configure > Certificates и нажимаем на Install Certificate

Zimbra-ssl-adminconsole-001.png

Выбираем сервер для установки SSL сертификата:

Zimbra-ssl-adminconsole-002.png

Выбираем Install the commercial signed certificate

Zimbra-ssl-adminconsole-007.png

Нажимаем кнопку Next

Zimbra-ssl-adminconsole-008.png

Добавляем файлы по одному, как показано на картинке:

Zimbra-ssl-adminconsole-009.png

Выбираем кнопку Install и SSL сертификат будет установлен

Zimbra-ssl-adminconsole-010.png

Перезапускаем Zimbra сервисы от пользователя zimbra в командной строке:

zmcontrol restart

Теперь возвращаемся в веб-интерфейс смотрим на установленный сертификат

Zimbra-ssl-adminconsole-011.png

Установка SSL сертификата на домен (ISPmanager)

После выпуска заказанного сертификата, на email, который был указан при заказе, Вы получите все необходимые файлы.

Далее:

1. Зайдите в ISPmanager под пользователем, которому принадлежит домен. Войдя под root’ом это можно сделать так: ISPmanager — Пользователи — выделите пользователя — нажмите «Вход» (справа вверху кнопка с изображением лестницы и двери).

Примечание: не забудьте для пользователя включить SSL (ISPmanager — Пользователи — двойной клик по пользователю — вкладка «Права»)

2. В разделе World Wide Web — «SSL-сертификаты» — справа вверху кнопка «Создать». Укажите «Тип сертификата» — существующий и заполните все поля:

Имя сертификата — имя сертификата, под которым он будет отображаться в системе. Может содержать буквы латинского алфавита, цифры, точки, а также знаки _ и —

Приватный ключ — укажите содержимое файла приватного ключа

Сертификат — укажите содержимое файла SSL-сертификата

Пароль — указывайте, если ключ сертификата зашифрован (обычно не требуется)

Цепочка сертификатов — Certificate bundle: цепочка сертификатов, которыми подписан данный сертификат.

3. После успешного добавления сертификата в разделе «WWW домены» можно его включить для сайта (двойной клик — установить галочку «SSL» — выбрать из списка нужный сертификат)

4. Детальная проверка установленного сертификата доступна по ссылкам:

Ручная установка SSL сертификата

Веб-сервер Apache

Если ssl запросы обрабатывает Apache, то сертификат устанавливается в файле конфигурации Apache. Проверить какой веб сервис отвечает на 443 (ssl) порту можно командой:

  • Linux:
# netstat -napt | grep 443
tcp        0      0 188.120.233.16:443      0.0.0.0:*               LISTEN      731/apache2
  • FreeBSD:
# sockstat |grep 443
root      httpd      83299 19 tcp4   188.120.225.20:443    *:*  

Для установки сертификата откройте конфигурационный файл Apache. На FreeBSD это /usr/local/etc/apache22/httpd.conf. Debian — /etc/apache2/apache2.conf. Centos — /etc/httpd/conf/httpd.conf. Найдите VirtualHost вашего домена.

Иногда вы можете найти блоки <VirtualHost> в отдельных файлах, в директории веб сервера.

Создайте блок <VirtualHost> для подключения SSL соединения. Пример:

<VirtualHost 10.0.0.1:443>
  DocumentRoot /home/user/data/www/domain.com
  ServerName domain.com
  SSLEngine on
  SSLCertificateFile /path/to/domain.crt
  SSLCertificateKeyFile /path/to/domain.key
  SSLCACertificateFile /path/to/ca.crt
</VirtualHost>

Где

  • domain.com — имя вашего домена.
  • 10.0.0.1 — ip адрес, на котором находится домен.
  • /home/user/data/www/domain.com — путь до домашней директории вашего домена.
  • /path/to/domain.crt — файл, в котором находится сертификат.
  • /path/to/domain.key — файл, в котором находится ключ сертификата.
  • /path/to/ca.crt — файл корневого сертификата.

Перезапустите Apache командой apachectl restart или apache2ctl restart

Веб-сервер Nginx

Если ssl запросы обрабатывает Nginx, то сертификат устанавливается в файле конфигурации Nginx.

Откройте конфигурационный файл Nginx. На FreeBSD это /usr/local/etc/nginx/nginx.conf, Linux — /etc/nginx/nginx.conf

Создайте серверный модуль для SSL соединения. Пример:

server {
        listen 10.0.0.1:443;
        server_name domain.com;
        ssl                  on;
        ssl_certificate     /path/to/domain.crt;
        ssl_certificate_key  /path/to/domain.key ;
  }

Где

  • domain.com — имя вашего домена.
  • 10.0.0.1 — ip адрес, на котором находится домен.
  • /path/to/domain.crt — файл, в котором находится сертификат.
  • /path/to/domain.key — файл, в котором находится ключ сертификата.

Цепочка сертификатов дописывается в файл с сертификатом.

Возьмем пример с Comodo Positive SSL. Центр сертификации присылает файлы domain.crt, PositiveSSLCA2 и AddTrustExternalCARoot. Цепочкой сертификата будет содержание файла PositiveSSLCA2 + AddTrustExternalCARoot. В итоге файл domain.crt должен содержать сертификат домена + сертификаты PositiveSSLCA2 + AddTrustExternalCARoot.

Перезапустите Nginx

  • FreeBSD:
/usr/local/etc/rc.d/nginx restart
  • Linux:
/etc/init.d/nginx restart

Несколько SSL сертификатов на одном ip адресе

Если используется несколько сертификатов на одном ip адресе, то браузер получит сертификат сервера по умолчанию, независимо от запрашиваемого имени сервера. Это связано с поведением протокола SSL. SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, и веб сервер не знает имени запрашиваемого сервера. Следовательно, он лишь может предложить сертификат сервера по умолчанию.

Решение для работы нескольких HTTPS-серверов на одном IP-адресе — расширение Server Name Indication протокола TLS (SNI, RFC 6066), которое позволяет браузеру передать запрашиваемое имя сервера во время SSL handshake, а значит сервер будет знать, какой сертификат ему следует использовать для соединения. Почти все современные браузеры поддерживают SNI, однако чтобы использовать SNI, соответствующая поддержка должна присутствовать также в библиотеке OpenSSL. OpenSSL поддерживает SNI начиная с версии 0.9.8f.

Полезные команды Openssl

  • Создание ключа для SSL-сертификата.
openssl req -batch -noout -new -newkey rsa:2048 -nodes -keyout cert.key
  • Генерация CSR-запроса:
openssl req -new -key cert.key -out cert.csr
  • Убрать пароль с ключа:
openssl rsa -in cert.key -out cert.key
  • Посмотреть данные CSR:
openssl req -noout -text -in cert.csr
  • Данные сертификата (проверить кем выдан, например):
openssl x509 -noout -text -in cert.crt
  • Проверить, что ключ соответствует сертификату:
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5

Два значения должны совпадать.

  • Узнать длину запроса:
echo '(' `openssl req -noout -modulus -in cert.csr | cut -d'=' -f2 | wc -c` '-1)*4' | bc
  • Проверить выдачу HTTPS:
openssl s_client -host  ulanovka.ru -port 443