Содержание

Настройка TLS для Receive Connector в Exchange Server

Настройка TLS

Цель

Настроить корректное имя TLS-сертификата (FQDN), которое будет использоваться Receive Connector при STARTTLS.

1. Проверка текущего сертификата

 Get-ExchangeCertificate | fl Thumbprint,Subject,Services 

Убедиться:

Сертификат содержит нужное имя (CN или SAN), например: mail.domain.ru Назначен для SMTP (Services : SMTP)

2. Проверка текущего Receive Connector

 Get-ReceiveConnector | fl Name,Server,Fqdn,TlsCertificateName 

Обратить внимание:

Fqdn — имя, которое сервер объявляет в EHLO TlsCertificateName — какой сертификат используется для TLS

3. Формирование строки TlsCertificateName

Формат:

 <I>Issuer<S>Subject 

Пример:

 $cert = Get-ExchangeCertificate -Thumbprint XXXXX $TlsName = "<I>$($cert.Issuer)<S>$($cert.Subject)" $TlsName 

4. Применение TLS-сертификата к Receive Connector

 Set-ReceiveConnector "Default Frontend EX01" -TlsCertificateName $TlsName 

5. Настройка FQDN (обязательно должно совпадать с сертификатом)

 Set-ReceiveConnector "Connector Name" -Fqdn mail.domain.ru 

Важно: FQDN должен совпадать с CN или SAN сертификата иначе возможны ошибки TLS (Mismatch)

6. Перезапуск службы транспорта

Restart-Service MSExchangeTransport 
Restart-Service MSExchangeFrontEndTransport 

7. Проверка TLS

Проверка через openssl:

 openssl s_client -starttls smtp -connect mail.domain.ru:25 

Проверить:

какой сертификат отдается совпадает ли CN/SAN

8. Типичные ошибки

Ошибка Причина
TLS negotiation failed Неверный сертификат
Certificate mismatch FQDN не совпадает
STARTTLS не работает Сертификат не назначен SMTP
Используется self-signed Не задан TlsCertificateName

Важно

По умолчанию Exchange может использовать self-signed сертификат.

Явная настройка TlsCertificateName обязательна для:

Рекомендации

Настройка из ISE

# Шаг 1. Проверяем текущие настройки коннектора получения в поле TlsCertificateName
 
Get-ReceiveConnector -Server $env:COMPUTERNAME | 
Where-Object {$_.Bindings -match ":587"} |
Format-List Name,Bindings,Fqdn,AuthMechanism,PermissionGroups,TlsCertificateName
 
 
#Шаг 2. Заходим в EMS и находим Thumbnail нужного сертификата
 
Get-ExchangeCertificate | ?{$_.services -match "S"}
 
#или в ISE
 
Get-ExchangeCertificate 
 
$MyThumbnail = "09F4EA0227B92441F804A4E87197F0206358B461"
 
#Шаг 3. Просматриваем настройки найденного сертификата 
Get-ExchangeCertificate $MyThumbnail | select Thumbprint,NotAfter, Subject, DnsNameList
 
#Шаг 4. Назначаем сертификат. 
$cert = Get-ExchangeCertificate -Thumbprint $MyThumbnail
 
$EXSERVER = $env:COMPUTERNAME
$EXSERVERFULL = "$EXSERVER.$env:USERDNSDOMAIN".ToLower()
 
 
$tlscertificatename = "<I>$($cert.Issuer)<S>$($cert.Subject)"
get-ReceiveConnector "$EXSERVER\Client Frontend $EXSERVER" | fl *
 
Set-ReceiveConnector "$EXSERVER\Client Frontend $EXSERVER"   -TlsCertificateName $tlscertificatename