SCEP - Simple Certificate Enrollment Process

Zertifikate können in einer Windows Welt mittels "Autoenrollment" auf Windows Domänenmitglieder (Computer und Benutzer) bereit gestellt werden. Aber Zertifikat auf ein IPad, Blackberry, Switch, Router o.ä. zu bringen, ist eher mühselig, In der Regel muss ein Request erstellt, der Certificate Signing Request (CSR) mühsam in der CA eingestellt und danach wieder auf das Endgerät importiert werden. Mit SCEP soll das alles einfach werden.

Die SCEP Funktionsweise

SCEP soll das Anfordern und Ausstellen von Zertifikaten in internen vertrauenswürdigen Netzwerken deutlich vereinfachen, indem das Gerät sich selbst das Zertifikat holt. Damit dies nicht missbraucht wird, muss aber zuerst eine berechtigte Person ein "Einmalkennwort" erstellen, welches dann dem Gerät zur Verfügung gestellt wird. Das Endgerät kann dann mit diesem zeitlich begrenzt gültigen Kennwort ( Windows; 60 Minuten) ein Zertifikat vom SCEP-Service anfordern.

Der Name dieses Verfahren enthält ein "Simple" und so gibt es natürlich einige Einschränkungen, die zu berücksichtigen sind.

Sicherheit

Da die CA ohne weitere Rückfrage das Zertifikat ausstellt, wenn ein Client bei der Anforderung ein aktuell gültiges Einmalkennwort verwendet, sollten Sie einige Voraussetzungen sicherstellen.

  • Sicherheit des Einmalkennworts
    Jeder, der das erstellte Einmalkennwort hat, kann sich ein Zertifikat ausstellen lassen. Der Weg zwischen der Person, die solche ein Einmalkennwort anfordert und die Person, die es in das Device überträgt, sollte kurz und schnell sein. Schnell schon daher, da das Kennwort nur eine begrenzte Haltbarkeit hat. Aber auch bei der Übertragung an das Devices, welches an der Stelle ja noch kein Kennwort hat, könnte einem Angreifer die Tür öffnen, indem die Verbindung abgehört, das Kennwort kopiert und dann der Einsatz durch das Gerät gestört wird.
  • Beschränkung der Zertifikatklassen
    Die CA sollte mit dem Einmalkennwort nicht beliebige Zertifikate ausstellen, sondern nur bestimmte Templates, welches Sie definieren können. SCEP ist ja gerade für "einfache Geräte" ausgelegt und z.B. keine bevorzugte Option für das Ausrollen von SMIME-Zertifikaten o.ä. Wenn Sie z.B.: nur Zertifikate für die Anmeldung an einem WiFi-AP oder ActiveSync-Server brauchen, dann kann SCEP für Smartphones helfen. Das Template muss dann auch nur die gewünschten "Usages" Enthalten
  • Vertrauenswürdige Administratoren
    Es versteht sich von selbst, dass die Personen, die solche Einmalkennworte anfordern und die Geräte, die basierend daraus ein Zertifikat erhalten, als "vertrauenswürdig" eingestuft werden. Dies gilt insbesondere für Software, die im Rahmen eines Device Management z.B. im Auftrag eines Geräts sogar selbst die Einmalkennworte anfordern darf.

SCEP ist also neben dem manuellen Schritt für den Administrator auch aus anderen Gründen nicht der ideale Weg für das Ausrollen von Zertifikaten. Windows Desktops in der Domäne sollten besser die im AD integrierte AutoEnrollment-Funktion nutzen. Allerdings kann SCEP eine einfache Option für eben all die anderen Geräte sein, bei denen der klassische Weg nicht oder nur sehr umständlich möglich ist. Und wer erst eine PFX-Datei auf einem Gerät über eine unverschlüsselte Verbindung installieren muss, ist mit SCEP vermutlich letztlich doch sicherer.

Installation mit Windows als Server

Microsoft hat die SCEP-Funktion mit Windows 2008 in die Zertifizierungsstelle ergänzt. Allerdings ist bei Windows 2008 dafür eine Enterprise-CA erforderlich, z.B. es muss ein Windows 2008 Enterprise oder Datacenter-Server sein. In Umgebungen mit Virtualisierung sind vermutlich die meisten Server schon mit dieser Lizenz ausgestattet.

Eventuell benötigen Sie einen Hotfix für Windows 2008R2
2483564 Renewal request für an SCEP certificate fails in Windows Server 2008 R2 if the certificate is managed by using NDES

Erst mit Windows 2012 hat Microsoft diese Funktion generell in die Zertifizierungsstelle eingebaut. Die Funktion nennt Microsoft allerdings nicht SCEP sondern Network Device Enrollment Service (NDES). Damit wird schon deutlich, dass die Zielgruppe eher "Netzwerkgeräte" sind. Die Installation erfolgt über Rollen und Features

Alternativ können Sie das natürlich auch über die PowerShell durchführen

add-windowsfeature ADCS-Device-Enrollment

Ob die Installation schon erfolgt ist, können Sie schnell über die Webseite prüfen, mit der sie später auch die Einmalkennworte anfordern.

Nach der Installation ist noch eine Konfiguration erforderlich

Auch wenn man hier den eingebauten Pool verwenden kann, sollte man doch ein Dienstkonto dafür einrichten, welches später auf der CA entsprechende berechtigt werden kann. Legen Sie daher am besten ein Dienstkonto in der Domäne mit Kennwort an und konfigurieren Sie den Benutzer mit den erforderlichen Berechtigungen.

Im nächsten Schritt wird ein Signing-Zertifikat für diesen Enrollment-Prozess ausgestellt. Dazu müssen Sie Daten für das "Request Authoritiy (RA)"-Zertifikat eintragen. Hier ein Beispiel

http://technet.microsoft.com/en-us/library/hh831498#RAInfo

Danach gilt es noch die Schlüssellänge auszuwählen. Die Standardwerte passen in den meisten Umgebungen

Nach einer abschließenden Bestätigung wird die Konfiguration abgeschlossen.

Nachdem die Installation abgeschlossen ist, können Sie in der IIS-Verwaltungskonsole die hinzu gekommenen virtuellen Verzeichnisse sehen:

Damit ist dieser Abschnitt schon mal erfolgreich verlaufen.

Konfiguration der Templates

Nun hat so eine CA natürlich eine ganze Reihe von Templates und woher soll der Client wissen, welches Template er nutzen darf?. Beim SCEP gibt es hier genau drei Verwendungsarten, die ein Client anfordern kann:

  • SignatureTemplate
    Der private Schlüssel kann nur verwendet werden, um Nachrichten digital zu signieren. Dazu sollte auf der CA das Template so konfiguriert sein, dass als Verwendnug auf "Signature" auf der Karteikarte "Request Handling" ausgewählt ist.
  • EncryptionTemplate
    Mit diesem Template kann das Device auch Daten verschlüsseln. Entsprechend ist im Request Handling auch "Encryption" eingestellt.
  • GeneralPurposeTemplate
    Zertifikate, die auf diesem Template basieren, können für beide Zwecke genutzt werden. Entsprechend ist das Request Handling hier auf "Signature and encryption" gestellt.

Der Client sendet also bei der Anforderung mit, welche dieser drei Optionen er nutzen möchte. Aber der NDES/SCEP-Server muss dann natürlich das passende Template bei der Einreichung an die CA nutzen. Und dies wird in der Registrierung des Dienstes hinterlegt.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MSCEP]
"SignatureTemplate"="templatename"
"EncryptionTemplate"="templatename"
"GeneralPurposeTemplate"="templatename"

In diesen Feldern ist der LDAP-Name des Templates zu hinterlegen. Per Default nutzt NDES das Template "IPSecIntermediateOffline". Sollten Sie ein eigenes Template verwenden, dann beachten Sie die folgenden Voraussetzungen:

  • Enroll Permission
    Das Dienstkonto des NDES-Dienste muss auf das Template das Recht "Enroll" haben
  • Ziel: Computer
    Das Template muss für Computer konfiguriert sein und nicht für Benutzer
  • SubjectName im Request
    Die CA soll den Subject-Name des Zertifikats aus dem Request übernehmen und nicht aus dem AD die Informationen des Computers oder Benutzers nutzen. Geräte, die per SCEP ein Zertifikat bekommen, sind meist keine Domänenmitglieder.

Wenn Sie also eigene Templates definieren, dann sollten Sie diese Voraussetzungen erfüllen, das Dienstkonto berechtigen und in der Registrierung die Einträge entsprechend setzen. Vergessen Sie nicht das neue Template auf der CA auch zu addieren.

Eine zweite Konfiguration erlaubt die Steuerung der Einmalkennworte. Sie können die maximale Gültigkeitsdauer in Minuten und die maximale Anzahl der gleichzeitig offenen Einmalkennworte definieren:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MSCEP]
"PasswordValidity"=dword:00000060
"PasswordMax"=dword:00000005

Mit dem Hotfix 959193 ist es aber auch mittlerweile möglich, dass man für alle Geräte immer das gleiche Kennwort nutzt. Das kann durchaus für ein müssenrollout temporär interessant sein. Allerdings ist dies natürlich schon ein Risiko, da Sie damit nicht mehr wirklich unter Kontrolle haben, wer für wen welche Zertifikate ausstellt.

  • 959193 Two improvements are available that shorten the time that is required to manage SCEP certificates by using the Network Device Enrollment Service in Windows Server 2008

Zuletzt könnte es sein, dass der HTTP-Request des Clients bei großen Zertifikaten zu "lang" ist und damit der IIS aufgrund von voreingestellten Grenzen den Request verwirft. Diese Einstellung kann mit folgender Kommandozeile angepasst werden. (Umbruch bitte entfernen)

%systemroot%\system32\inetsrv\appcmd.exe set config 
  /section:system.webServer/security/requestFiltering 
  /requestLimits.maxQueryString:"3072" 
  /commit:apphost

Sollten Sie auch das Ausrollen von Zertifikaten mit mehreren Name (MSXFAQ.DE:SANZertifkate) unterstützen, dann müssen Sie dies auf der Zertifizierungsstelle eventuell freischalten. (Auch hier den umbruch entfernen)

CertUtil 
  -SetReg Policy\EditFlags
  +EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc & net start certsvc

Damit sollte die Infrastruktur aber komplett sein.

Anforderung durch den Admin

Nun muss noch ein berechtigter Anwender natürlich über die Webseite entsprechende Einmalkennworte erstellen. Das geht über den Aufruf der Webseite:

Im Browser wird dann ein Einmalkennwort angezeigt:

Dieses Kennwort können Sie nun mit ihrem Device verwenden oder einem Benutzer geben, dass er sich damit ein Zertifikat anfordern kann. Hier ist noch zu lesen, dass dieses Kennwort nur 60 Tage gültig ist.

Es ist durchaus möglich, die Anforderung zu "verzögern", d.h. dass das Gerät die Anforderung einreicht aber das Zertifikat erst durch einen CA-Admin freigegeben werden muss. Dazu muss das Device aber die Funktion unterstützen, einen ausstehenden Request zu einem späteren Zeitpunkt mit der zugewiesenen RequestID abzuschließen.

Nutzung von einem Client

Mit dem Einmalkennwort kann nun auf einem Client, der SCEP/NDES unterstützt, sich direkte an den SCEP-Server wenden und ein Zertifikat anfordern. Der Client verbindet sich beim Windows SCEP-Server mit der URL

Es ist aber nun eine Frage des Clients, wie er von dieser URL (oder der Adresse eines anderen SCEP-Servers) Kenntnis erhält.

Nutzung mit Apple

Ich nutze selbst ein älteres IPhone4s und IPad und beide erlauben nicht direkt die Eingabe einer SCEP URL und Kennworts. Hier ist also ein zentraler Provisioning-Server oder Profile erforderlich.

Bislang habe ich SCEP noch nicht mit IOS umgesetzt oder noch nicht beschrieben.

Nutzung mit Android

Bislang habe ich SCEP noch nicht mit Android umgesetzt oder noch nicht beschrieben.

Anscheinend gibt es (Stand Jan 2015) auch noch nicht viele anderen Quellen im Internet, auf die ich verlinken kann.

Nutzung mit Blackberry

Etwas anders sieht es schon mit dem Blackberry aus. Zum Client passt der Blackberry Enterprise Server, welche eine Provisioning-Plattform für die Clients darstellt und daher natürlich die Handhelds auch entsprechend konfigurieren kann. Beim Einsatz mit einem neuen Blackberry Client (10) muss der Client das Zertifikat selbst rechnen und vom SCEP-Server abrufen. Der Prozess ist etwas wie folgt:

Der BES in der Mitte hilft dem Gerät beim erstellen eines Request mit dem Challenge-Key aber das Gerät fordert letztlich das Zertifikat an. Damit stellt sich aber die Frage nach dem Kennwort. In der Verwaltungskonsole gibt es dazu die Möglichkeit verschiedene SCEP Profile zu verwalten und hier ein Kennwort zu hinterlegen.

Ich interpretiere das aber so, dass man mit einem Einmal-Kennwort des Windows SCEP aka. NDES hier nicht weiter kommt und stattdessen den SCEP-Service auf ein permanentes Kennnwort stellen wird.

Nutzung mit Switches

Auf meinem Tisch steht ein kleiner Cisco Switch SG200-08P. Leider kann der sich nicht per SCEP ein Zertifikat besorgen, so dass ich dann per HTTPS ihn verwalten könnte. Auch die anderen Switches und Router in meinem Fundus unterstützen kein SCEP. Hier ist also weiter der alte Weg angesagt, d.h. entweder Request auf dem Switch erstellen und dann das Zertifikat und die Stamm-CAs einzuspielen oder gleich eine PFX-Datei hochzuladen, sofern möglich.

Ansonsten kann ich hier die relevanten Cisco Befehle aus einer anderen Konfiguration wiedergeben.

hostname switch.msxfaq.de
ip domain-name .msxfaq.de
crypto key generate rsa
crypto ca trustpoint CA1.msxfaq.de
enrollment URL http://ca1.msxfaq.de/certsrv/mscep/mscep.dll
crypto ca authentication ca1.msxfaq.de
crypto ca enrol ca1.msxfaq.de

Wobei man geteilter Meinung sein, kann, wie wichtig die Unterstützung von SCEP für Netzwerkgeräte ist.

Weitere Links