Как правильно настроить SNI в Zimbra OSE?

В начале 21-го века на грани истощения такой ресурс, как адреса IPv4. Еще в 2011 году IANA выделила региональным интернет-регистраторам последние пять оставшихся блоков /8 из своего адресного пространства, а уже в 2017 году адреса закончились и у них. Ответом на катастрофическую нехватку IPv4-адресов стало не только появление протокола IPv6, но и технологии SNI, которая позволила размещать огромное множество веб-сайтов на одном IPv4-адресе. Суть SNI заключается в том, что это расширение позволяет клиентам  в процессе рукопожатия сообщать серверу название сайта, с которым он хочет соединиться. Это позволяет серверу хранить множество сертификатов, а значит обеспечивать работу множества доменов на на одном IP-адресе. Особенно востребованной технология SNI стала среди SaaS-провайдеров для бизнеса, которые получили возможность размещать у себя практически неограниченное количество доменов без оглядки на необходимое для этого число IPv4-адресов. Давайте же узнаем, как можно реализовать поддержку SNI в Zimbra Collaboration Suite Open-Source Edition.

Как правильно настроить SNI в Zimbra OSE?

SNI работает во всех актуальных и поддерживаемых версиях Zimbra OSE. В том случае, если у вас Zimbra Open-Source работает на мультисерверной инфраструктуре, вам необходимо будет выполнять все нижеприведенные действия на узле с установленным Proxy-сервером Zimbra. Кроме этого вам потребуются совпадающие пары сертификат+ключ, а также доверенные цепочки сертификатов от вашего центра сертификации для каждого из доменов, который вы хотите разместить на своем IPv4-адресе. Обращаем ваше внимание, что причина подавляющего большинства ошибок при настройке SNI в Zimbra OSE заключается именно в некорректных файлах с сертификатами. Поэтому советуем внимательно всё проверить перед их непосредственной установкой.

В первую очередь, для того, чтобы SNI нормально заработал нужно ввести команду zmprov mcf zimbraReverseProxySNIEnabled TRUE на узле с прокси-сервером Zimbra, а затем перезапустить службу Proxy при помощи команды zmproxyctl restart.

Начнем мы с создания доменного имени. Для примера мы возьмем домен company.ru и, после того как домен уже создан, определимся с именем виртуального хоста Zimbra и с виртуальным IP-адресом. Обращаем внимание на то, что имя виртуального хоста Zimbra должно соответствовать имени, которое пользователь должен ввести в строке браузера, чтобы получить доступ к домену, а также совпадать с указанным в сертификате названием. Для примера возьмем в качестве имени виртуального хоста Zimbra mail.company.ru, а в качестве виртуального IPv4-адреса используем адрес 1.2.3.4.

После этого достаточно ввести команду zmprov md company.ru zimbraVirtualHostName mail.company.ru zimbraVirtualIPAddress 1.2.3.4, чтобы привязать виртуальный хост Zimbra к виртуальному IP-адресу. Обращаем ваше внимание на то, что если сервер находится за NAT или брандмауэром, необходимо позаботиться, чтобы все запросы к домену шли именно на привязанный к нему внешний IP-адрес, а не на его адрес в локальной сети.

После того как все будет сделано, остается лишь проверить и подготовить сертификаты домена к инсталляции, а затем установить их.

Если выдача сертификата на домен прошла корректно, у вас на руках должно быть три файла с сертификатами: два из них представляют из себя цепочки сертификатов от вашего центра сертификации, а один является непосредственным сертификатом на домен. Кроме того, на руках у вас должен быть файл с ключом, который вы использовали для получения сертификата. Создайте отдельную папку /tmp/company.ru и поместите туда все имеющиеся файлы с ключами и сертификатами. В итоге должно получиться что-то вроде этого:

ls /tmp/company.ru
company.ru.key
 company.ru.crt
 company.ru.root.crt
 company.ru.intermediate.crt

После этого объединим цепочки сертификатов в один файл при помощи команды cat company.ru.root.crt company.ru.intermediate.crt >> company.ru_ca.crt и убедимся в том, что с сертификатами все в порядке при помощи команды /opt/zimbra/bin/zmcertmgr verifycrt comm /tmp/company.ru/company.ru.key /tmp/company.ru/company.ru.crt /tmp/company.ru/company.ru_ca.crt. После того как проверка сертификатов и ключа увенчается успехом, можно приступать к их установке.

Для того, чтобы начать установку, сперва объединим сертификат на домен и доверенные цепочки от центров сертификации в один файл. Делается также при помощи одной команды вида cat company.ru.crt company.ru_ca.crt >> company.ru.bundle. После этого необходимо выполнить команду для того, чтобы записать все сертификаты и ключ в LDAP: /opt/zimbra/libexec/zmdomaincertmgr savecrt company.ru company.ru.bundle company.ru.key, а затем установить сертификаты с помощью команды /opt/zimbra/libexec/zmdomaincertmgr deploycrts. После установки сертификаты и ключ от домена company.ru будут храниться в папке /opt/zimbra/conf/domaincerts/company.ru

Путем повторения этих действий с использованием разных доменных имен, но одинакового IP-адреса, можно добиться размещения нескольких сотен доменов на одном IPv4-адресе. При этом можно без каких-либо проблем использовать сертификаты от самых разных центров их выдачи. Проверить правильность всех выполненных действий можно в любом браузере, где для каждого виртуального имени хоста должен отображаться свой SSL-сертификат. 

По всем вопросам, связанными c Zextras Suite вы можете обратиться к Представителю компании «Zextras» Екатерине Триандафилиди по электронной почте [email protected]

Источник: habr.com

Добавить комментарий