Exchange Autodiscover, das unbekannte Wesen

Problembeschreibung

Nachdem ein neues Zertifikat in den Exchange-Server importiert wurde, kann es zu Fehlermeldungen beim Start von Outlook auf den Client-PCs kommen.

In diesem Fenster sehen wir in der ersten Zeile, dass sich unser Exchange mit seinem internen FQDN “servername.domäne.local” meldet. Ebenfalls gibt uns die Meldung die Information, dass das Zertifikat ungültig ist oder die Namen nicht übereinstimmen.

Fehlermeldung beim Start von Outlook

Mit einem Klick auf “Zertifikat anzeigen” erhalten wir zusätzliche Informationen und können nun die Namen überprüfen. Hier sehen wir direkt, dass sich diese unterscheiden.

Details zum Zertifikat

Vorgehen am Exchange

Nun haben wir im Exchange, genau genommen in der Exchange Management Shell, drei Punkte, die uns besonders interessieren. Dies sind die externen und internen Adressen für:

  • AutodiscoverService
  • AutodiscoverVirtualDirectory
  • WebServicesVirtualDirectory

Diese Informationen müssen entsprechend des Servernamens im Zertifikat angepasst werden.

AutodiscoverService

Mit dem cmdlet “Get-ClientAccessServer” erhält man alle ClientAccessServer der Organisation. Nach dem Anpassen an unseren Exchange-Server und zuschneiden der Ausgabe auf die Adresse des AutodiscoverService, erhalten wir auch die Informationen, die wir benötigen.

Get-ClientAccessServer | ft AutodiscoverServiceInternalUri

Anstelle des lokalen FQDN “servername.domäne.local” muss nun entsprechend des Zertifikats die neue Adresse eingegeben werden. Dies erreichen wir mit dem Set-ClientAccessServer cmdlet.

Set-ClientAccessServer -Identity servername -AutoDiscoverServiceInternalUri “https://exchange.domain.de/Autodiscover/Autodiscover.xml”
 

AutodiscoverVirtualDirectory

Nun lesen wir die interne und externe URL des AutodiscoverVirtualDirectory aus. Nach der Standardinstallation von Exchange sind diese i.d.R. leer.

Get-AutoDiscoverService

Folgende Befehlszeile setzt beide notwendigen Einträge, damit wir der Übereinstimmung mit dem Zertifikat einen Schritt näher kommen.

Set-AutodiscoverVirtualDirectory -Identity “servername\Autodiscover (Default Web Site)” -InternalUrl “https://exchange.domain.de/Autodiscover/Autodiscover.xml” -ExternalUrl “https://exchange.domain.de/Autodiscover/Autodiscover.xml”
 

WebServicesVirtualDirectory

Die externe Adresse der WebServicesVirtualDirectory ist ebenfalls leer. Die interne Adresse dabei zeigt widerum auf unseren internen FQDN. Beide Einträge müssen also wieder angepasst werden.

Get-WebServicesVirtualDirectory

Set-WebServicesVirtualDirectory -Identity “servername\EWS (Default Web Site)” -InternalUrl “https://exchange.domain.de/EWS/Exchange.asmx” -ExternalUrl “https://exchange.domain.de/EWS/Exchange.asmx”
 

Weitere Konfigurationsmöglichkeiten

Zusätzlich kann man natürlich noch weitere Zugänge optimieren (wenn wir schon einmal dabei sind…). Darunter z.B. der OWA-Zugriff oder auch Microsoft-ActiveSync. Hier eine kleine Auflistung der notwendigen Befehlszeilen.

Set-OWAVirtualDirectory -Identity “servername\OWA (Default Web Site)” -InternalUrl “https://exchange.domain.de/owa” -ExternalUrl “https://exchange.domain.de/owa”
 
Set-ECPVirtualDirectory -Identity “servername\ECP (Default Web Site)” -InternalUrl “https://exchange.domain.de/ecp” -ExternalUrl “https://exchange.domain.de/ecp”
 
Set-ActiveSyncVirtualDirectory -Identity “servername\Microsoft-Server-ActiveSync (Default Web Site)” -InternalUrl “https://exchange.domain.de/Microsoft-Server-Activesync” -ExternalUrl “https://exchange.domain.de/Microsoft-Server-Activesync”
 
Set-OABVirtualDirectory -Identity “servername\OAB (Default Web Site)” -InternalUrl “https://exchange.domain.de/OAB” -ExternalUrl “https://exchange.domain.de/OAB”
 
Enable-OutlookAnywhere -Server servername -ExternalHostname “exchange.domain.de” -ClientAuthenticationMethod “Basic”-SSLOffloading:$False
 

Änderungen am lokalen DNS

Damit die Clients auch etwas mit der Adresse “exchange.domain.de” anfangen können, muss noch eine Forward-Zone im lokalen DNS eingerichtet werden. Dies ist auch schnell erledigt. Aber bitte beachten nur “exchange.domain.de” als Forward-Zone einzutragen.

1. Öffnen der DNS-Verwaltung
2. Rechtsklick auf Forward-Lookupzonen und im Kontextmenu “Neue Zone…” wählen

Erstellen einer neuen DNS-Forward-Lookupzone 1

3. Der Assistent startet
4. “Primäre Zone” wählen
Erstellen einer neuen DNS-Forward-Lookupzone 2

5. Den Namen der Zone angeben. Hier den Namen aus dem Zertifikat verwenden. In unserem Beispiel “exchange.domain.de”

Erstellen einer neuen DNS-Forward-Lookupzone 3

6. Den Assistenten durchlaufen und “Fertig stellen”
7. Anschließend die Zone öffnen.
8. Via Rechtsklick im rechten Bereich das Kontextmenu öffnen “Neuer Host (A oder AAAA)…” auswählen
9. Das Feld “Name” leer lassen, damit der übergeordnete Name “exchange.domain.de” verwendet wird.
10. IP-Adresse des lokalen Exchange-Servers eintragen im Feld “IP-Adress” eintragen

Erstellen einer neuen DNS-Forward-Lookupzone 4

Bei all diesen Änderungen sollten zumindest die Exchange-Dienste neugestartet und ein IIS-Reset durchgeführt werden. Am besten einmal sowohl Server als auch Clients neustarten.

 

 

Anbei noch eine ältere Anleitung von mir, wo auch die Befehle einzeln aufgeführt sind:

Leider kommt es immer wieder dazu, dass es Zertifikatsfehlermeldungen bei der Einrichtung von MS Exchange gibt. Wenn man den Mechanismus dahinter versteht, kann man dies allerdings relativ zügig in den Griff kriegen.

Ich gehe mal von dem Verfahren aus, ein Selbstsigniertes Zertifikat zu verwenden, welches bei den meisten Servern zu Einsatz kommen wird.
In der IIS-Verwaltung  ein Domänenzertifikat erstellen (Vorraussetzung ist dass die Zertifizierungsstelle installiert ist)
Hierbei ist der CN=“externer FQDN“
Als Bespiel für einen „externen FQDN“ könnte man annehmen „exchange.achim-rohwedder.de“ oder was auch immer für ein DNS-Name gewählt wurde, wodurch die externe IP des Routers symbolisiert wurde.

Fangen wir an mit OWA

set-OWAVirtualDirectory -identity „owa (Default Web Site)“ -ExternalURL „https://externer FQDN/owa“

set-OWAVirtualDirectory -identity „owa (Default Web Site)“ -InternalURL „https://externer FQDN/owa“

ActiveSync für die Mobilen Devices

set-ActiveSyncVirtualDirectory -identity „Microsoft-Server-ActiveSync (Default Web Site)“  -ExternalURL „https://externer FQDN/Microsoft-Server-ActiveSync“
set-ActiveSyncVirtualDirectory -identity „Microsoft-Server-ActiveSync (Default Web Site)“ -InternalURL „https://externer FQDN/Microsoft-Server-ActiveSync“

Autodiscover
set-AutoDiscoverVirtualDirectory -Websitename „Autodiscover (Default Web Site)“         -WindowsAuthentication $true -DigestAuthentication $true -ExternalUrl „https://externer FQDN/autodiscover/autodiscover.aspx“

set-AutoDiscoverVirtualDirectory -Websitename „Autodiscover (Default Web Site)“         -WindowsAuthentication $true -DigestAuthentication $true -InternalURL „https://externer FQDN/autodiscover/autodiscover.aspx“

ECP

Set-ECPVirtualDirectory -Identity “servername\ECP (Default Web Site)” -InternalUrl “https://externer FQDN/ecp” -ExternalUrl “https://externer FQDN/ecp”

UMS umstellen
Set-UMVirtualdirectory -Identity „SERVERNAME\UnifiedMessaging (Default Web Site)“ -InternalUrl „https://externer FQDN/UnifiedMessaging/Service.asmx“

Set-UMVirtualdirectory -Identity „SERVERNAME\UnifiedMessaging (Default Web Site)“  -ExternalURL „https://externer FQDN/UnifiedMessaging/Service.asmx“

Set-ClientAccessServer -AutodiscoverServiceInternalURI „https://externer FQDN/autodiscover/autodiscover.xml“
Hier wird die Identity abgefragt, diese ist im Allgemeinen der Servername groß geschrieben

Schließlich muss die EWS umgestellt werden

Set-WebServicesVirtualDirectory -identity “SERVERNAME\EWS (Default Web Site)” -externalurl https://externe URL/EWS/Exchange.asmx

Set-WebServicesVirtualDirectory -identity “SERVERNAME\EWS (Default Web Site)” -internalurl https://externe URL/EWS/Exchange.asmx

Anschließend muss noch eine Forwardlookupzone erstellt werden mit dem Namen „externer FQDN“ und der lokalen IP des Servers.

Abfragen, ob Autodiscover soweit korrekt ist:
Get-AutodiscoverVirtualDirectory | fl

Nu ist alles hübsch… 🙂 (sollte zumindest)

Ach ja kleiner Nachtrag:
Wenn man die Identity nicht kennt, kann man sich mit einem kleinen PS-Skript behelfen:

[array]$Idents=Get-WebServicesVirtualDirectory

foreach ($Ident in $Idents)
{
write-host Identity: $Ident.Identity
write-host InternalUrl: $Ident.InternalUrl
write-host ExternalUrl: $Ident.ExternalUrl
}

admin has written 97 articles