19 апр. 2010 г.

Сертификат SSL для Exchange сервера с несколькими DNS именами субъекта

Если вы не разжились несколькими железными платформами под почтовую систему и у вас все основные роли Microsoft Exchange установлены на одном сервере, то вам наверняка придется столкнуться с задачей установки одного сертификата SSL для нескольких DNS имен сервера.

К службам сервера по HTTPS протоколу обращаются клиенты, которые знают его как основной почтовый домен (domainname.com), сервер с ролью OWA (owa.domainname.com), службу autodiscover (autodiscover.domainname.com), сервер с плоским именем Netbios (netbios), SMTP и POP3 сервер (smtp.domainname.com и pop3.domainname.com), да и мало ли как вам еще заблагорассудится. И все эти запросы ваш DNS благополучно разрешает в имя единственного сервера с одним портом 443. Если на сервере установлен обычный сертификат с одним DNS именем субъекта, то клиент генерирует как минимум предупреждение "Сертификат безопасности этого веб-узла был выпущен для веб-узла с другим адресом". Для Outlook это чревато ошибками при загрузке автономной адресной книги и подключениях "Outlook Anywhere".

Выход есть. Достаточно сгенерировать сертификат, который бы включал Дополнительное имя субъекта.

Вот как это сделать в Powershell:

1. Генерируем запрос на сертификат:
New-ExchangeCertificate -GenerateRequest:$true -SubjectName "DC=domainname, DC=com, O=CompanyName, CN=servername.domainname.com" -DomainName servername.domainname.com, autodiscover.domainname.com, owa,domainname.com, domainname.com, servername, smtp.domainname.com, pop3.domainname.com -PrivateKeyExportable:$true -FriendlyName "Microsoft Exchange 2007" -Path c:\cert.req -IncludeAcceptedDomains:$false -Force:$true
В результате получим текстовый файл с запросом к службе сертификации.

2. Выполним расширенный запрос к службе сертификации указав сгенерированный текст и загрузим выданный сертификат в файл cert.cer. (Я, разумеется, не сомневаюсь что у вас есть своя служба сертификации в домене и вы знаете зачем она нужна :)

3. Импортируем полученный сертификат
Import-ExchangeCertificate -path c:\cert.cer
Обратите внимание на номер сертификата в выводе команды, именно его нужно указать в следующем шаге вместо моей тарабарщины.

4. Назначим сертификат серверным ролям Exchange
Enable-ExchangeCertificate -thumbprint 12345вышелзайчегпогулять67890 -services "IIS,SMTP,IMAP, POP"

После проделанных шагов, ваш сервер начнет откликаться сертификатом с несколькими DNS именами субъекта. Проверить успешность действий можно, например, в консоли диспетчера служб IIS на закладке "Безопасность каталога" просмотрев сертификат. В поле "Дополнительное имя субъекта" должны присутствовать все указанные нами имена.

Ну что ж, работаем дальше.