Nachdem ein Exchange 2019 Server konfiguriert wurde, steht die Installation eines SSL Zertifikats an. Für die korrekte Konfiguration des Zertifikats müssen die Hostnamen ermittelt werden, welche für das Zertifikat relevant sind. Das folgende Script liest die Hostnamen aus den konfigurierten URLs der virtuellen Verzeichnisse aus und zeigt die entsprechenden Hostnamen in der Exchange Management Shell an. Das Script führt keine Konfiguration durch und dient nur der Überprüfung der Konfiguration und als Hilfestellung für die Konfiguration des Zertifikats:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#Getting Exchange FQDNs from configured URLs#Local Server Nametry { $ExchangeServer = (Get-ExchangeServer $env:computername).Name}catch {}#Autodiscovertry { $AutodiscoverFQDN = ((Get-ClientAccessService -Identity $ExchangeServer).AutoDiscoverServiceInternalUri.Host).ToLower() [array]$CertNames += $AutodiscoverFQDN}catch {}#Outlook Anywheretry { $OAExtFQDN = ((Get-OutlookAnywhere -Server $ExchangeServer).ExternalHostname.Hostnamestring).ToLower() [array]$CertNames += $OAExtFQDN $OAIntFQDN = ((Get-OutlookAnywhere -Server $ExchangeServer).Internalhostname.Hostnamestring).ToLower() [array]$CertNames += $OAIntFQDN}catch {}#OABtry { $OABExtFQDN = ((Get-OabVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $OABExtFQDN $OABIntFQDN = ((Get-OabVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $OABIntFQDN}catch {}#ActiveSynctry { $EASIntFQDN = ((Get-ActiveSyncVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $EASIntFQDN $EASExtFQDN = ((Get-ActiveSyncVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $EASExtFQDN}catch {}#EWStry { $EWSIntFQDN = ((Get-WebServicesVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $EWSIntFQDN $EWSExtFQDN = ((Get-WebServicesVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $EWSExtFQDN}catch {}#ECPtry { $ECPIntFQDN = ((Get-EcpVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $ECPIntFQDN $ECPExtFQDN = ((Get-EcpVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $ECPExtFQDN}catch {}#OWAtry { $OWAIntFQDN = ((Get-OwaVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $OWAIntFQDN $OWAExtFQDN = ((Get-OwaVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $OWAExtFQDN}catch {}#MAPItry { $MAPIIntFQDN = ((Get-MapiVirtualDirectory -Server $ExchangeServer).Internalurl.Host).ToLower() [array]$CertNames += $MAPIIntFQDN $MAPIExtFQDN = ((Get-MapiVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host).ToLower() [array]$CertNames += $MAPIExtFQDN}catch {}#Make FQDNs uniquetry { $CertNames = $CertNames | select –Unique}catch {}write-host "Autodiscover Hostname: $AutodiscoverFQDN Outlook Anywhere Hostname (Internal): $OAIntFQDNOutlook Anywhere Hostname (External): $OAExtFQDNActiveSync Hostname (Internal): $EASIntFQDNActiveSync Hostname (External): $EASExtFQDNOAB Hostname (Internal): $OABIntFQDN OAB Hostname (External): $OABExtFQDNEWS Hostname (Internal): $EWSIntFQDNEWS Hostname (External): $EWSExtFQDNECP Hostname (Internal): $ECPIntFQDNECP Hostname (External): $ECPExtFQDNOWA Hostname (Internal): $OWAIntFQDNOWA Hostname (External): $OWAExtFQDNMAPI Hostname (Internal): $MAPIIntFQDNMAPI Hostname (External): $MAPIExtFQDN"write-host "SANs needed for Certificate:"$CertNameswrite-host "Use this Hostname as Common Name (CN): $OWAExtFQDN" |
Die Ausgabe des Scripts auf der Exchange Management Shell sieht dann wie folgt aus:
Das Script liefert die Hostnamen welche als SAN (Subject Alternate Name) und CN (Common Name) auf der Zertifikat vorhanden sein müssen.
Das Script steht auch hier zum Download bereit:
Hier findet sich ein Artikel zur Basiskonfiguration für Exchange 2019:
Ein ausführliches Whitepaper zum Thema Exchange Server und Zertifikate ist derzeit in Arbeit. Dieses Script ist ein nur ein kleiner Auszug aus dem neuen Whitepaper.
