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.
- Exchange 2007 New-ExchangeCertificate
http://technet.microsoft.com/en-us/library/aa998327.aspx
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.
- Exchange Server 2010 “The Certificate is Invalid für Exchange Server usage” Error
http://exchangeserverpro.com/exchange-server-2010-certificate-invalid-for-exchange-server-usage-error
Weitere Links
- Rolle der CA
- Private CA
- Network Load Balancing
- CA installieren
- MSXFAQ - IIS Zertifikat einrichten
- MSXFAQ - Clientzertifikat anfordern
- MSXFAQ - ISA-Server und SSL
- MSXFAQ - SelfSSL
- MSXFAQ - OpenSSL
-
MSXFAQ:DE - SAN-Zertifikate
Welche CAs stellen diese Zertifikate aus ? -
The One With The FBA Redirect Loop
https://blogs.technet.microsoft.com/jasonsla/2015/01/15/the-one-with-the-fba-redirect-loop/
Exchange mag keine CNG Zertifikate - 929395 Description of the Exchange-specific Web sites that are
provided by X.509 certification authorities
Entrust http://www.entrust.net/microsoft/
Comodo http://www.comodo.com/msexchange
DigiCert http://www.digicert.com/unified-communications-ssl-tls.htm - Avoiding Server Names in SSL Certificates for Exchange Server
https://practical365.com/exchange-server/avoiding-exchange-2013-server-names-ssl-certificates/ - Beschreibung von Entrust für Exchange 2007 Zertifikate
http://www.entrust.net/ssl-technical/msx2007/index.cfm - Exchange 2007 Autodiscover and certificates
http://blogs.technet.com/b/exchange/archive/2007/04/30/438249.aspx - How to Configure SSL Certificates to use Multiple Client Access
Server Host Names
http://technet.microsoft.com/en-us/library/aa995942.aspx - Exchange 2007 Autodiscover and certificates
http://blogs.technet.com/b/exchange/archive/2007/04/30/438249.aspx -
PowerShell commandline generator
https://www.digicert.com/easy-csr/exchange2007.htm -
Using one Certificate and a Redirection
http://www.exchangeninjas.com/CasCertMethod3 -
Beschreibungen von Comodo
- InstantSSL Certificate Installation: Microsoft IIS
Root and Intermediate Certificate installation
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=487 - CSR Generation: Exchange 2010 (PowerShell)
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1273 - CSR Generation and Certificate Installation für Server 2003 / 2008 / IIS5 / IIS6 / IIS7 / Exchange 2007
/ 2010 via command shell (31337)
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1275 - Certificate Installation: Exchange 2010 (PowerShell)
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1284 - CSR
Generation: Exchange 2010 (Certificate Wizard)
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1309 - Certificate
Installation: Exchange 2010 (Certificate Wizard)
https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1310
- InstantSSL Certificate Installation: Microsoft IIS
Root and Intermediate Certificate installation