Создание правильного сертификата Exchange 2007

После установки Exchange Server 2007 с ролью транспортного сервера мало кто задумывается о необходимости создания нового сертификата для соединителей. И без этой нехитрой операции все вроде и так работает.

Но если посмотреть журнал событий, то можно увидеть регулярно появляющееся сообщение об ошибке:

Тип события:	Ошибка
Источник события:	MSExchangeTransport
Категория события:	TransportService
Код события:	12014
Дата:		13.06.2009
Время:		8:57:49
Пользователь:	Н/Д
Компьютер:	EXCHSRV
Описание:
Microsoft Exchange не удается найти сертификат, содержащий имя домена proba.ru, в хранилище 
личных сертификатов на локальном компьютере, поэтому он не поддерживает команду STARTTLS SMTP
для соединителя Default EXCHSRV с полным доменным именем proba.ru. Если полное доменное имя
соединителя не указано, используется полное доменное имя компьютера. Проверьте конфигурацию
соединителя и установленных сертификатов, чтобы убедиться, что для этого полного доменного
имени есть сертификат с именем домена. Если сертификат существует, выполните командлет
Enable-ExchangeCertificate -Services SMTP, чтобы убедиться, что служба транспорта Microsoft 
Exchange имеет доступ к ключу сертификата.

 

Такая ситуация возникает из-за того что ваш внутренний домен имеет имя proba.local, а внешний домен proba.ru. Самозаверенный сертификат создается при установке Exchange Server 2007 и поэтому содержит в себе все имена серверов и доменов, известные приложению Exchange на момент установки (т.е. только имя внутреннего домена proba.local). Этот сертификат действителен в течение 12 месяцев. Если оставить все как есть, то кроме ошибки в логах возможны проблемы со СПАМ фильтрами.

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

 

Общие сведения

Для создания сертификатов используется Командлет New-ExchangeCertificate. Он имеет множество параметров, но нас будут интересовать только следующие:

Параметр Тип Описание
DomainName Microsoft.Exchange.Data.MultiValuedProperty Этот параметр используется для добавления одного или нескольких доменных имен (полных доменных имен) или имен сервера в итоговый запрос на сертификат. Для доменных имен могут использоваться только знаки «a-z», «0-9», а также дефис («-«). Длина доменного имени не должна превышать 255 знаков. Для ввода нескольких доменных имен или имен серверов необходимо использовать запятую в качестве разделителя.
Services Microsoft.Exchange.Management.SystemConfigurationTasks.AllowedServices Этот параметр позволяет указать службы, которые будут использовать создаваемый сертификат. Допустимые значения представляют собой сочетания следующих элементов:

  • IMAP
  • POP
  • UM
  • IIS
  • SMTP
  • None
  • Чтобы задать самозаверяющий сертификат для нескольких служб, укажите каждое значение в кавычках, используя в качестве разделителя запятые, например: Чтобы создать отключенный сертификат, который можно будет экспортировать на другой компьютер, задайте для этого параметра значение None. Значение по умолчанию: SMTP.

    SubjectName System.Security.Cryptography.X509Certificates.X500DistinguishedName Этот параметр используется для задания имени субъекта создаваемого сертификата. «Имя субъекта» сертификата — это поле, используемое службами, взаимодействующими с DNS. Поле «Имя субъекта» привязывает сертификат к определенному имени сервера или домена. Имя субъекта представляет собой различающееся имя в формате X.500, состоящее из одного или нескольких относительных различающихся имен (также называемых RDN). По умолчанию полное доменное имя сервера, на котором выполняется этот командлет, используется в качестве общего имени готового сертификата.

     

    «Имя субъекта» TLS-сертификата — это поле, используемое службами, взаимодействующими с DNS. Поле «Имя субъекта» привязывает сертификат к определенному имени сервера или домена. В таблице ниже представлены наиболее часто используемые имена.

    Имя Аббревиатура Тип
    Страна/регион C ASCII
    Компонент домена DC ASCII
    Область или район S Юникод
    Местность L Юникод
    Организация O Юникод
    Подразделение OU Юникод
    Общее имя CN Юникод

     

    Создание сертификата

    Итак предположим, что у нас в сети единственный Exchange Server 2007. Внутренне доменное имя proba.local, внешнее proba.ru, почтовый сервер имеет имя exchsrv.proba.local. При данной структуре мы можем создать один универсальный сертификат для всех соединителей.

    В параметре DomainName нам необходимо указать через запятую все возможные доменные имена, по которым могут обращаться к этому серверу

    -DomainName proba.ru, proba.local, exchsrv, exchsrv.proba.local

    В параметре Services указываем сервисы для которых будет использоваться сертификат

    -Services "IMAP, POP, SMTP,IIS"

    Параметр SubjectName у нас может выглядеть так

    -SubjectName "DC=proba, DC=ru, CN=proba.ru"

    Также в параметр SubjectName можно вписать страну, название организации и т.д.

    Таким образом, мы получаем следующую команду

    New-ExchangeCertificate -DomainName proba.ru, proba.local, exchsrv, exchsrv.proba.local 
           -Services "IMAP, POP, SMTP,IIS" -SubjectName "DC=proba, DC=ru, CN=proba.ru"

    Теперь можно посмотреть какие сертификаты имеются у нас в системе

    Get-ExchangeCertificate | fl

    Ответ будет примерно таким по каждому имеющемуся сертификату в системе

    AccessRules        : {System.Security.AccessControl.CryptoKeyAccessRule, System
                         .Security.AccessControl.CryptoKeyAccessRule, System.Securi
                         ty.AccessControl.CryptoKeyAccessRule}
    CertificateDomains : {proba.ru, proba.local, exchsrv, exchsrv.proba.local}
    HasPrivateKey      : True
    IsSelfSigned       : True
    Issuer             : CN=proba.ru, DC=ru, DC=proba
    NotAfter           : 23.07.2010 9:13:56
    NotBefore          : 23.07.2009 9:13:56
    PublicKeySize      : 2048
    RootCAType         : None
    SerialNumber       : 3ED2227EA88B37AE47E2F28A159F91FA
    Services           : IMAP, POP, IIS, SMTP
    Status             : Valid
    Subject            : CN=proba.ru, DC=ru, DC=proba
    Thumbprint         : AEFC3B6EF3888B632ED563B34BC1BD7FB7BA6F6A

    При помощи командлета Remove-ExchangeCertificate мы можем удалить не нужные сертификаты

    Remove-ExchangeCertificate -Thumbprint AAAAAA6EF3888B632ED563B34BC1BD7FB7BAAAAA

     

    Срок действия сертификата 12 месяцев. После этого срока придется сгенерировать новый сертификат или скопировать уже имеющийся.

    Get-ExchangeCertificate -Thumbprint AEFC3B6EF3888B632ED563B34BC1BD7FB7BA6F6A | New-ExchangeCertificate

    Теперь мы имеем сервер с единственным универсальным самоподписанным сертификатом.

    Размещение данного материала на других сайтах без разрешения автора(zsv@msadmin.ru) запрещается.