PKI-Administratoren gehen häufig davon aus, dass die Option in der Zertifikatvorlage , den privaten Schlüssel nicht zum Export zu erlauben, verbindlich ist.

Dem ist jedoch nicht so.
Es handelt sich hierbei lediglich um eine Voreinstellung, welche der Antragsteller, wenn er die Zertifikatanforderung manuell stellt, jederzeit ändern kann.
Bei der Beantragung über die Microsoft Management Console (MMC) kann man im Schritt der Auswahl der Zertifikatvorlage die "Details" ausklappen. Dort wird man einen "Eigenschaften" Button vorfinden.

Hier finden wir in der Karteikarte "Private Key" die Option, die Exportierbarkeit zu aktivieren.

Darüber hinaus ist auch ein als nicht exportierbar erzeugter Schlüssel nicht vor einem Export sicher. Hierfür existieren einschlägige Werkzeuge, um solche Zertifikate samt Schlüsseln zu exportieren.
Härtungsmöglichkeit mit TameMyCerts
Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.
Ob ein privater Schlüssel exportierbar ist oder nicht, kann nicht aus dem Zertifikatantrag ausgelesen werden. Das gesamte Konzept der Exportierbarkeit ist auch ein Microsoft-proprietäres der Cryptographic Service Provider bzw. Key Storage Provider und existiert somit auch nur in diesem Ökosystem.
Um einen gewissen Grad an Kontrolle zurück zu erlangen, können wir uns den Umstand zu Nutze machen, dass – wenn ein Zertifikatantrag mit einer Windows-API erzeugt wurde – der Zertifikatantrag eine Metainformation enthält, welcher Prozess das Schlüsselpaar erzeugt hat.
Hier sei aber gleich eingeworfen, dass diese Metainformation mit entsprechendem Aufwand durch den Antragsteller fälschbar ist.

Das TameMyCerts Policy Modul für Microsoft Active Directory Certificate Services kann den bei der Erstellung des Zertifikatantrags verwendeten Prozess aus diesem auslesen und anhand dieser Information entscheiden, ob ein Zertifikat ausgestellt werden soll oder nicht.
Die meisten Benutzer würden ein solches exportierbares Zertifikat wahrscheinlich über die Microsoft Management Console (MMC) beantragen. Auch mit anderen Tools (beispielsweise certreq.exe, certutil.exe oder OpenSSL) könnten entsprechende exportierbare Schlüssel erzeugt werden.
Mit TameMyCerts können wir diese Prozesse explizit verbieten.
OpenSSL und andere nicht-Microsoft-Werkzeuge tragen keine Prozessinformationen in den Zertifikatantrag ein. In diesem Fall würde TameMyCerts den Zertifikatantrag auch ablehnen.
<CertificateRequestPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DisallowedProcesses>
<string>mmc.exe</string>
<string>powershell.exe</string>
<string>certutil.exe</string>
<string>certreq.exe</string>
<!-- OpenSSL doesn't include process information and will therefore be denied as well -->
</DisallowedProcesses>
<!-- additional Directives go here -->
</CertificateRequestPolicy>
Noch eleganter wäre, nur den Windows Autoenrollment Prozess zu erlauben. Dieser läuft im Kontext des Windows-Taskplaners (taskhostw.exe).
<CertificateRequestPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AllowedProcesses>
<string>taskhostw.exe</string>
</AllowedProcesses>
<!-- additional Directives go here -->
</CertificateRequestPolicy>
Versucht nun ein Benutzer, ein Zertifikat mit einem nicht freigegebenen Prozess zu beantragen, wird dies von TameMyCerts erkannt und der Zertifikatantrag abgelehnt.

TameMyCerts wird auf der Zertifizierungsstelle einen entsprechenden Eintrag ins Ereignisprotokoll der Zertifizierungsstelle schreiben. Somit kann sogar eine Alarmierung ausgelöst werden.

Weiterführende Links:
- Grundlagen: Cryptographic Service Provider (CSP) und Key Storage Provider (KSP)
- Grundlagen manuelle und automatische Zertifikatbeantragung über Lightweight Directory Access Protocol (LDAP) und Remote Procedure Call / Distributed Common Object Model (RPC/DCOM)
Kommentare sind geschlossen.