После установки 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 | Этот параметр позволяет указать службы, которые будут использовать создаваемый сертификат. Допустимые значения представляют собой сочетания следующих элементов:
Чтобы задать самозаверяющий сертификат для нескольких служб, укажите каждое значение в кавычках, используя в качестве разделителя запятые, например: Чтобы создать отключенный сертификат, который можно будет экспортировать на другой компьютер, задайте для этого параметра значение 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) запрещается.