Exchange 2007 Zertifikate

Unified Communications Consultant m/w
Komm in unser Team bei Net at Work. Bewirb dich jetzt bei uns.
http://www.netatwork.de/jobs.htm#LyncCon

Hinweis:
Mit "New-ExchangeCertificate" selbst erstellten Zertifikate sind nicht sinnvoll in unternehmen einzusetzen, sondern eher für Entwickler oder Tests. für unternehmen könnten Sie besser ein Private CA einsetzen.

Exchange 2007 unterstützt wie Exchange 2000/2003 und sogar Exchange 5.5 die Verschlüsselung mittels Zertifikaten. Allerdings gibt es erst am Exchange 2010 einen "Assistenten" für die Verwaltung der Zertifikate. Mit Exchange 2007 ist die PowerShell der passende Weg:

User Account Control auf Windows 2008
Beachten Sie, dass Sie nicht nur als lokaler Administrator angemeldet, sondern die Exchange PowerShell auch "Als Administrator" ausführen, da ansonsten z.B. die Zertifikatsanfordern ohne weitere UAC-Meldung fehl schlägt.

Achtung:
Exchange 2007 Selbstzertifikate laufen nach 1 Jahr aus. Danach bekommen die Clients Fehlermeldungen bei Autodiscover und anderen webbasierten Zugriffen.

Denken Sie daher daran, frühzeitig eigene langlaufende Zertifikate zu installieren.

Allerdings ist die Installation aktuell nicht mehr über eine GUI möglich, sondern muss über die PowerShell erfolgen.

Kurzfassung

Daher beschreibe ich hier kurz die folgenden Schritte:

  • Anfordern eines Zertifikates
    Zuerst müssen Sie auf einem Exchange 2007 Server eine Zertifikatsanforderung erstellen, in der die relevanten Daten enthalten sind. Diese Anforderung geben Sie dann an die Zertifizierungsstelle zur Bestätigung.
New-ExchangeCertificate `
-GenerateRequest `
-SubjectName "c=DE, o=Firma, cn=owa.firma.tld" `
-IncludeAcceptedDomains `
-IncludeAutodiscover `
-DomainName owa.firma.tld,owa `
-privatekeyexportable $true `
-Path c:\e2007.req
  • Zertifikatsdatei einreichen
    Der vorherige Schritt erstellt eine Anforderungsdatei "c:\e2007.req",welche Sie bei ihrer Zertifizierungsstelle einreichen müssen. Meist öffnen Sie diese Datei per Notepad um die Daten komplett per Cut, Copy & Paste in ein Formular der Zertifizierungsstelle zu posten. Sie erhalten als Ergebnis das Zertifikat für die Anforderung. Speichern Sie diese Datei z.B. als "c:\e2007.cer" ab.
  • Installieren des Zertifikats
    Diese CER-Datei müssen Sie nun auf dem Server wieder importieren. Erst dann ist das Zertifikat auf diesem Server auch komplett und gültig.

# Import für Exchange 2007
Import-ExchangeCertificate -Path C:\e2007.cer

In Exchange 2010 funktioniert das so nicht mehr. Statt dessen hilft folgende komplizierterer Aufruf

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path c:\cert.crt -Encoding byte -ReadCount 0))

Sie können es bei Exchange 2010 aber auch einfach per GUI machen.

  • Anzeigen der Zertifikate und Zuweisen des Zertifikats.
    Meist gibt es auf einem Server mehrere Zertifikate, von denen Sie eines in Exchange z.B. für den Webserver zuweisen. Daher sollten Sie zuerst die bestehenden Zertifikate sich anschauen und von dem gewünschten Zertifikat den Fingerabdruck (Thumbprint) kopieren, um diesen in der zweiten Zeile dann zuzuweisen:

Get-ExchangeCertificate | fl
Enable-ExchangeCertificate -Thumbprint E2D9B9B...0A60 -Services IIS,POP,IMAP,UM,SMTP

Nachdem Sie diese Schritte durchlaufen haben, können Sie die ansonsten nicht gesicherten Protokolle POP3, IMAP4,HTTP und Unified Messaging auch mit einer SSL-Verschlüsselung nutzen. Und das ist mehr denn je erforderlich, da ansonsten Anmeldedaten und Kennworte unverschlüsselt übertragen werden. Entsprechenden Programme zum Abfangen genau dieser Pakete sind kostenfrei für jedermann verfügbar. So ist "Cain und Abel" z.B. ein Programm, um unsichere Anmeldungen zu übertragen.

Zertifikatsanforderung erstellen

Der erste Schritt ist die Anforderung eines Zertifikats auf einem Exchange Server. Genau genommen handelt es sich dabei um einen Certificate Signing Request (CSR) . Achten Sie dabei darauf dass sie:

  • Angemeldet als Administrator
    Nur so ist sichergestellt, dass Sie auf den den lokalen Zertifikatsspeicher zugreifen können. Sie müssen auch später beim zweiten Schritt mit diesem Account angemeldet sein.
  • Keine "Kommas" in den Feldern
    Bei sehr vielen Zertifizierungsstellen wird ein Komma als "Feld-Ende" interpretiert, so dass letztlich eine fehlerhafte Anforderung generiert wird.
  • Keine Sonderzeichen !
    Im "Distinguished Name" des Zertifikats dürfen keine Sonderzeichen sein. Das macht zwar eh meist keinen Sinn, da der Name ja auch im DNS gültig sein muss, aber Sie könnten dies irrtümlich eingeben. Verboten sind u.a. ! @ # $ % ^ * ( ) ~ ? > < & / \

Starten Sie nun die Exchange Management Shell und nutzen Sie das "New-ExchangeCertificate" Commandlet wie in folgendem Beispiel aufgezeigt: 

New-ExchangeCertificate
    -GenerateRequest `
    -SubjectName "c=DE, o=MSXFAQ, cn=owa.msxfaq.de"  `
    -IncludeAcceptedDomains  `
    -privatekeyexportable $true  `
    -Path c:\msxfaq.de.req

Wenn das Zertifikat für mehrere Namen gültig sein soll, dann müssen Sie alle Namen hier angeben.

New-ExchangeCertificate  `
    -GenerateRequest `
    -SubjectName "c=DE, o=MSXFAQ, cn=owa.msxfaq.de" `
    -IncludeAcceptedDomains `
    -DomainName owa.msxfaq.de,owa,pop3.msxfaq.de,imap4.msxfaq.de,autodiscover.msxfaq.de `
    -privatekeyexportable $true `
    -Path c:\msxfaq.de.req

Hinweis zu Autodiscover und SAN-Zertifikaten
Outlook 2007 erlaubt eine automatische Konfiguration, indem es einen Hostname "autodiscover.firmennname.tld per SSL erreichen will. Über die Option "-IncludeAutodiscover" können Sie das "New-ExchangeCertificate"-Commandlet anweisen auch diesen Namen zu addieren. Sie können aber auch den Namen direkt wie im vorigen Beispiel eintragen. Da Zertifizierungsstellen natürlich "pro Namen" den Preis festlegen, sollten Sie wissen, welche Namen ihr Request enthält.

Exchange 2007 erfordert eventuell mehrere "Namen" für den gleichen Webserver. Das aber nur ein SSL-Zertifikat pro Web eingerichtet werden kann, gibt es so genannte "Subject Alternative Name Certificate" bzw. "Unified Communications Certificate"
Siehe auch Exchange 2007 Autodiscover and certificates  http://blogs.technet.com/b/exchange/archive/2007/04/30/438249.aspx

Sie müssen nicht unbedingt ein offizielles Zertifikat für Autodiscover einsetzen.
Man kann durch Weglassen des "-generateRequest" auch ein selbstsigniertes Zertifikat erstellen, was intern vollkommen ausreichend ist. die folgende Zeile um ihre Servernamen angepasst könnte reichen

New-ExchangeCertificate  `
    -SubjectName "c=DE, o=MSXFAQ, cn=srv01.msxfaq.de"  `
    -IncludeAcceptedDomains ` 
    -IncludeAutoDiscover ` 
    -privatekeyexportable $true `
    -domainName srv01, srv01.msxfaq.de `
    -Services "SMTP, IMAP, POP, UM, IIS"

Warnung
Wenn man die obigen Beispiele nutzt, dann werden zwar die Domains addiert, aber nicht der Servername. Ein Zertifikat mit den Namen des Servers braucht Exchange 2007 aber für die Verbindung per SMTP. Sie sollten also immer noch den Namen des Servers (FQDN und WINS) addieren

Nach dem Aufruf befindet sich in C:\owa.msxfaq.de.req die Anforderungsdatei. Diese Datei müssen Sie nun bei der Zertifizierungsstelle signieren lassen. Die Zertifizierungsstelle wird sicher prüfen, ob Sie berechtigt sind, ein Zertifikat für die Namen zu erhalten. Dazu muss z.B. bei den meisten CAs der Name bei "o=MSXFAQ" der Firmenname beinhalten.

Zertifikat installieren

Von der Zertifizierungsstelle bekommen Sie dann wieder eine Mail oder Datei zurück, in der ein Abschnitt in der folgenden Form vorhanden ist:

-----BEGIN CERTIFICATE-----
9UMRwwGgYDVQQDExNHVEUgQ3liZXJUcnVzdCBSb290MB4XD YwZDAPBgNVHRMECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBB
...
o+dYikuVB+0/1habRkb+k4vFe6tn5IvQMnfhZbSJNoXn5Il GVDWQYlfC0/R1wjfv+U6rzTJbJ7WXX0Ka5jKLKuckXNvu7E
-----END CERTIFICATE-----

Speichern Sie nur diesen Textbaustein als Datei mit der Endung "CER" oder "CRT". Das "----BEGIN CERTIFICATE----" und "----END CERTIFICATE----" muss mit enthalten sein.

Nun melden Sie sich am gleichen Exchange Server mit dem gleichen Benutzernamen wieder an und spielen die Zertifikatsbestätigung ein. Auch dies erfolgt wieder in der Exchange Management Shell:

Import-ExchangeCertificate -Path c:\msxfaq.de.cer

Damit ist das Zertifikat auf dem Server installiert aber noch nicht aktiviert.

Ich habe an verschiedenen Stellen Hinweise darauf gefunden,  dass nur der Weg über die PowerShell zum Erfolg führt und der Versucht über die MMC mit dem Zertifikat-Snapin keine tauglichen Zertifikate installiert.

Der Erfolg des Imports können Sie mit "Get-ExchangeCertificate" überprüfen

Get-ExchangeCertificate

Zertifikat sichern und importieren

Nachdem das Zertifikat nun installiert ist, sollten Sie es sofort exportieren und an einem sicheren Platz ablegen. Diese Sicherungsdatei ist mit einem eigenen Kennwort geschützt, so dass ein Missbrauch auch bei einem Diebstahl nicht ganz so einfach ist. Vorausgesetzt ihr Kennwort ist stark genug.

Export-ExchangeCertificate -Thumbprint XXXXXXXXXXXXXXXXX -BinaryEncoded:$true -Path c:\msxfaq.de.pfx -Password:(Get-Credential).password

Die PowerShell erfragt von ihnen das Kennwort, mit welchem die PFX-Datei verschlüssel werden soll.

Der Import nach einem Serverausfall oder auf einem anderen Server im Cluster oder NLB-Team erfolgt über folgenden Aufruf

Import-ExchangeCertificate -Path c:\msxfaq.de.pfx -Password:(Get-Credential).password

Auch hier werden Sie wieder von der PowerShell nach dem Kennwort gefragt.

Dienste konfigurieren

Ein Zertifikat auf dem Server ist nur der Anfang. Damit die verschiedenen Exchange Dienste dieses Zertifikat nutzen, müssen Sie noch entsprechende konfiguriert werden. Auch dies erfolgt über die PowerShell.

Enable-ExchangeCertificate
 -Thumbprint <fingerabdruck des Zertifikats>
 -Services SMTP,IMAP,POP,UM,IIS

Natürlich können Sie auch mehrere Dienste in einer Zeile angeben. Über folgende Zeile kann die Nutzung von Zertifikaten auch wieder abgeschaltet werden.

Enable-ExchangeCertificate -Services None

Fehlermeldung: "Das Zertifikat ist für die Exchange Server Verwendung ungültig"

Wenn Sie ein Zertifikat einer offiziellen CA auf Exchange 2010 installieren, dann kann es passieren dass das Zertifikat in der Exchange 2010 als "ungültig" angezeigt wird. Die englische Meldung dazu lautet auf "The Certificate is Invalid für Exchange Server usage". Der Fehler ist auf den ersten Blick gar nicht so einfach zu finden, da die das Zertifikat anzeigen lassen können und meist sogar gut aussieht. Es kann z.B. an einem falschen "Typ" liegen (Zertifikatsvorlage) aber sehr viel wahrscheinlicher ist es einfach nur, dass die Zertifikatskette etwas länger ist und auf dem Server die erforderlichen Zwischenzertifikate nicht installiert sind. Diese sind aber notwendig, wenn der Server an den Client nicht nur das eigentliche Zertifikat sondern eben auch die Kette senden muss.

Laden Sie sich von der CA daher einfach die Zertifizierungskette herunter und installieren Sie diese auf dem Server.

Weitere Links