работа_с_сертификатами_exchange

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
работа_с_сертификатами_exchange [2024/04/11 13:47] jpработа_с_сертификатами_exchange [2025/03/17 13:47] (current) jp
Line 3: Line 3:
 **Установка сертификатов для IMAP** **Установка сертификатов для IMAP**
  
-:!: //В случае, если мы используем wildcard-сертификат, напрямую назначать его службе IMAP не требуется.// +:!: //В случае, если мы используем wildcard-сертификат, дополнительно назначать его отдельно - не требуется.// 
  
 Необходимо только указать хостнейм для подключения, сервер сам найдёт wildcard-сертификат.  Необходимо только указать хостнейм для подключения, сервер сам найдёт wildcard-сертификат. 
Line 15: Line 15:
 Get-ExchangeCertificate | select Thumbprint, Services, NotAfter, Subject, CertificateDomains | where {$_.Services -match "IMAP"} | fl Get-ExchangeCertificate | select Thumbprint, Services, NotAfter, Subject, CertificateDomains | where {$_.Services -match "IMAP"} | fl
 </code> </code>
 +
 +Если нам всё-таки необходимо назначить сертификат IMAP напрямую, сделать это можно следующим образом:
 +
 +   Enable-ExchangeCertificate -Thumbprint 9043B6B42D0BB935E4CB84F81111506012322A51 -Services 'imap'
 +
 +----
 +=== Назначение сертификата службам SMTP ===
 +
 +   Enable-ExchangeCertificate -Thumbprint 9043B6B42D0BB935E4CB84F81111506012322A51 -Services 'smtp'
  
 ---- ----
Line 60: Line 69:
 Если мы попробуем удалить старый сертификат после назначения нового через веб - мы получим сообщение, что сертификат нельзя удалять, т.к. он уже назначен коннектору отправки.  Если мы попробуем удалить старый сертификат после назначения нового через веб - мы получим сообщение, что сертификат нельзя удалять, т.к. он уже назначен коннектору отправки. 
  
 +;#;
 {{::certificate-removal-error.png?600|}} {{::certificate-removal-error.png?600|}}
 +;#;
  
 Это намекает нам на то, что сертификат необходимо поменять на коннекторе отправки тоже. Здесь есть нюанс, связанный с тем, что при простом выполнении команды //Get-SendConnector | fl//, мы не сможем получить thumbprint сертификата, а получим только имя. Если имена сертификатов совпадают, что часто бывает, когда продляем сертификат от одного и того же УЦ - потребуется сгенерировать имя нового сертификата специальным образом, как описано далее в этом разделе и установить его на коннектор.  Это намекает нам на то, что сертификат необходимо поменять на коннекторе отправки тоже. Здесь есть нюанс, связанный с тем, что при простом выполнении команды //Get-SendConnector | fl//, мы не сможем получить thumbprint сертификата, а получим только имя. Если имена сертификатов совпадают, что часто бывает, когда продляем сертификат от одного и того же УЦ - потребуется сгенерировать имя нового сертификата специальным образом, как описано далее в этом разделе и установить его на коннектор. 
Line 106: Line 117:
 Запускаем транспортную службу на всех серверах, где останавливали: Запускаем транспортную службу на всех серверах, где останавливали:
  
-   Start-Service MSExchangeTransport +   Start-Service MSExchangeTransport   
-   +
 :!: //Если после этого мы хотим удалить старый сертификат, но всё равно получаем в веб-интерфейсе прежнюю ошибку - удаляем сертификат со всех серверов, на которых он установлен при помощи mmc.// :!: //Если после этого мы хотим удалить старый сертификат, но всё равно получаем в веб-интерфейсе прежнюю ошибку - удаляем сертификат со всех серверов, на которых он установлен при помощи mmc.//
  
 **Назначение нового сертификата для SMTP edge-транспорта** **Назначение нового сертификата для SMTP edge-транспорта**
  
-Назначения сертификата send-коннектору недостаточно. После этого обязательно назначить сертификат службам SMTP на Edge Transport серверах.+Назначения сертификата send-коннектору недостаточно. После этого обязательно назначить сертификат службам SMTP на Edge Transport серверах. Если этого не сделать, рискуем получить задержки при доставке писем, а также неработающее шифрование почты. В логах edge, расположенных в папке:
  
-Если мы запустим на эджах команду //Get-ExchangeCertificate//, мы увидим, что новый сертификат не назначен сервису SMTP. Отметим thumbprint сертификата и назначим его ОДНИМ ИЗ сертификатов SMTP:+<WRAP prewrap> 
 +<code> 
 +C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Edge\ProtocolLog\SmtpSend 
 +</code> 
 +</WRAP> 
  
-   Enable-ExchangeCertificate 17B096239B6C4833E92D70E199F59702A4F1C6BC -Services SMTP+Обнаружим ошибку: 
 + 
 +   TLS negotiation failed with error UnknownCredentials 
 + 
 +Если мы запустим на эджах команду //Get-ExchangeCertificate//, мы увидим, что новый сертификат (thumbprint которого будет и в логе) - не назначен сервису SMTP. Отметим thumbprint сертификата и назначим его ОДНИМ ИЗ сертификатов SMTP: 
 + 
 +   Enable-ExchangeCertificate CERT_THUMBPRINT -Services SMTP 
 + 
 +:!: //Если мы используем один с серверами mailbox - wildcard сертификат - мы не хотим назначать его сертификатом по умолчанию, т.к. такие сертификаты на edge использовать нельзя и к тому же, сломает edge subscription. Поэтому, при выполнении командлета Enable-ExchangeCertificate - на запрос о замене сертификата следует ответить "n". В этом случае сервису SMTP будет назначено несколько сертификатов, это позволит работать TLS на Send-коннекторе и оновременно не сломает работу edge subscription.//  
 + 
 +{{::not_replace_smtp_exch_edge.jpg|}} 
 + 
 +Два сертификата на SMTP: 
 + 
 +{{::exchange_smtp_two_certs.jpg|}} 
 + 
 +---- 
 + 
 +=== Скрипт для определения используемого сертификата на SMTP-коннекторах на нескольких серверах === 
 + 
 +<WRAP prewrap> 
 +<code> 
 +#Get all Exchange Servers in the environment 
 + 
 +$ExchangeServers = (Get-ExchangeServer |Where-Object {$_.ServerRole -like "mailbox"} )| Select-Object Name,DistinguishedName 
 + 
 +$Results = @() 
 + 
 +#Process Information 
 + 
 +ForEach($Server in $ExchangeServers){ 
 + 
 +$TransportCert = (Get-ADObject -Identity $Server.DistinguishedName -Properties *).msExchServerInternalTLSCert 
 + 
 +$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 
 + 
 +$CertBlob = [System.Convert]::ToBase64String($TransportCert) 
 + 
 +$Cert.Import([Convert]::FromBase64String($CertBlob)) 
 + 
 +$server | Add-Member -MemberType NoteProperty -Name DefaultTLSCertSubject -Value $Cert.Subject 
 + 
 +$server | Add-Member -MemberType NoteProperty -Name DefaultTLSCertFriendlyName -Value $Cert.FriendlyName 
 + 
 +$server | Add-Member -MemberType NoteProperty -Name DefaultTLSCertThumbprint -Value $Cert.Thumbprint 
 + 
 +$server | Add-Member -MemberType NoteProperty -Name DefaultTLSCertExpireDate -Value $Cert.NotAfter 
 + 
 +                              
 + 
 +$Results += $Server 
 + 
 +
 + 
 +#Show result 
 +$Results | Out-GridView 
 +</code> 
 +</WRAP>
  
-:!: //Однако, если мы используем один с серверами mailbox wildcard сертификат мы не хотим назначать его сертификатом по умолчанию, т.к. такие сертификаты на edge использовать нельзя и к тому же, сломает edge subscription. Поэтому, при выполнении командлета Enable-ExchangeCertificate на запрос о замене сертификата следует ответить "n"./+Авторhttps://dirteam.com/bas/2020/06/24/field-notes-what-is-the-current-default-smtp-certificate-for-your-exchange-server-environment/
 {{tag>Exchange Microsoft Mail PowerShell Certificates}} {{tag>Exchange Microsoft Mail PowerShell Certificates}}
работа_с_сертификатами_exchange.1712843262.txt.gz · Last modified: 2024/04/11 13:47 by jp