Können MS Certificate Services eine mit OpenSSL erstellte Zertifizierungsstelle sein?

15

Ich möchte eine Unternehmenszertifizierungsstelle für meine Domain einrichten. So kann ich Zertifikate für verschiedene Zwecke ausstellen. Ich möchte die bewährte Methode befolgen, eine Offline-Zertifizierungsstelle als Stamm zu verwenden und meine Unternehmenszertifizierungsstelle als untergeordnete Zertifizierungsstelle einzurichten. Es erscheint jedoch albern, eine vollständige Kopie von Windows für diese Aufgabe zu lizenzieren.

Ich hoffe, dass ich in der Lage bin, eine Live-Distribution auf einem USB-Flash-Laufwerk zu installieren, dann openssl zu installieren und meine Zertifizierungsstelle auf einem Flash-Laufwerk einzurichten. Wenn ich bereit bin, den Root-Schlüssel / das Zertifikat zu erstellen, trenne ich den Computer vom Netzwerk und verwende diesen USB-Datenträger nie wieder an einem im Netzwerk angeschlossenen Computer.

Kann ich ein untergeordnetes Zertifizierungsstellenzertifikat für eine Windows-Unternehmenszertifizierungsstelle ordnungsgemäß signieren und erstellen, das verwendet werden kann? Welche Optionen muss ich mit OpenSSL verwenden, um die Zertifizierungsstelle zu erstellen und das untergeordnete Zertifizierungsstellenzertifikat ordnungsgemäß zu signieren.

Ich habe versucht, im Internet zu suchen, und dies war das einzige, was ich zu diesem Thema finden konnte. Aber es ist älter als 2008, und ich bin nicht ganz sicher, ob die Person alle erfolgreich war.

Zoredache
quelle
Das Tool muss nicht unbedingt OpenSSL sein, aber ich möchte keine große Zertifizierungsstelle wie EJBCA betreiben. Ich suche eine sehr leichte CA, die in einer Live-CD / Live-USB-Umgebung ausgeführt werden kann.
Zoredache

Antworten:

14

Ja, es funktioniert gut; Eine Windows-Zertifizierungsstelle hat keine Bedenken, als Untergebene eines Nicht-Windows-Stamms ausgeführt zu werden.

Getestet mit einem OpenSSL-Stamm und einem Windows 2008 R2-Untergebenen im Enterprise-Modus.


Ein paar Dinge, mit denen man gut spielen kann, was die MS CA in der OpenSSL-Konfiguration erwartet:

  • Gültige AIA- und CDP-Speicherorte sollten für das Stammzertifikat in dem Abschnitt gelten, der von der x509_extensionsEigenschaft des [req]Abschnitts für den selbstsignierten Stamm konfiguriert wurde . Etwas in diese Richtung:

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • In einer bestimmten OpenSSL-Konfiguration sind wahrscheinlich standardmäßig keine untergeordneten Zertifizierungsstellen zulässig. Ändern Sie dies für signierte Anfragen (stellen Sie sicher, dass dies nicht für Anfragen gilt, bei denen es sich natürlich nicht um Zertifizierungsstellen handeln sollte). Dies wird in dem Abschnitt sein, der durch die x509_extensionsEigenschaft des Abschnitts konfiguriert wird [ca]:

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Also machen wir eine Zertifizierungsstelle zum Testen.

Machen Sie Ihre Wurzel:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

Probieren Sie Ihre Konfiguration aus und erstellen Sie die erforderlichen Dateien und Verzeichnisse im [ca]Abschnitt Ihrer OpenSSL-Konfiguration.

Alles bereit, um die Microsoft-Seite in Schwung zu bringen. Erstellen Sie eine untergeordnete Windows-Zertifizierungsstelle mit manueller Signatur.

Laden Sie die Zertifikatsanforderung auf den OpenSSL-Server hoch. Laden Sie währenddessen das Stammzertifikat herunter. Importieren Sie es in den vertrauenswürdigen Stammspeicher - auf dem Computer, nicht auf Ihrem Benutzer!

Stellen Sie das untergeordnete Zertifikat aus:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

Wenn dies nicht funktioniert hat, hat Ihre Zertifizierungsstelle wahrscheinlich ein Problem mit der Konfiguration - neues Zertifikatverzeichnis, Indexdatei, serielle Datei usw. Überprüfen Sie die Fehlermeldung.

Wenn es gelaufen ist, dann ist es das. Wenn nicht, erstellen Sie eine CRL und legen Sie sie in den CDP ein, den Sie oben konfiguriert haben. Ich habe gerade Apache installiert und es in Webroot gestaut:

openssl ca -gencrl -out /var/www/root.crl

Und legen Sie Ihr Zertifikat am AIA-Speicherort ab, falls dies noch nicht geschehen ist:

cp /etc/ssl/certs/root.pem /var/www/root.pem

Laden Sie das neu ausgestellte untergeordnete Zertifikat herunter und installieren Sie es mit dem MMC-Snap-In für Zertifizierungsstellen auf der Zertifizierungsstelle. Es wird sich über alle Probleme mit Vertrauen oder Validierung auseinandersetzen, aber es hat keine moralischen Einwände dagegen.

Endresultat; Eine funktionierende Windows-Zertifizierungsstelle, die sich nicht über das Enterprise-PKI-Snap-In beschwert OpenSSL Generated Certificateund deren Attribute eindeutig sind.

Arbeits-ca

Shane Madden
quelle
6

Ich verstehe, worauf du hinaus willst, aber ich glaube nicht, dass OpenSSL das richtige Werkzeug für diesen Job ist. Vielleicht möchten Sie sich Open Source Certificate Authority-Projekte wie EJBCA ansehen, die sich mehr auf diese Funktionalität als auf OpenSSL konzentrieren und über spezifische Dokumentation verfügen, die Sie verwenden können.

Ich sehe keinen Grund, warum das Konzept nicht funktioniert, da Sie lediglich das Zertifikat der untergeordneten Zertifizierungsstelle signieren. Wenn Sie eine öffentliche Zertifizierungsstelle dafür bezahlen würden, würden Sie nicht unbedingt wissen oder sich darum kümmern, welche Art von Server sie verwenden.

Sie müssen sich nur um Folgendes kümmern:

  • Sie können das Zertifikat von der von Ihrem Untergebenen erstellten CSR signieren
  • Das Ergebnis kann auf dem Untergebenen selbst installiert werden
  • Sie haben ein Stammsignaturzertifikat, das auf allen Clients, auf die Sie abzielen, als vertrauenswürdig installiert werden kann
  • Sie können eine Sperrliste generieren, die irgendwo bereitgestellt wird

Ich kann nicht behaupten, dass ich das getan habe, aber ich bin sicher, wenn Sie die Dokumente zum Generieren einer CSR aus einer Windows-Box befolgen, dann Ihre CA-Dokumente zum Generieren eines .p7k-Zertifikats aus einer CSR befolgen, dann sollten Sie in Ordnung sein.

Übrigens - Ich würde empfehlen, dass Sie Ihre Zertifizierungsstelle als virtuelle Maschine für einen gängigen Hypervisor wie Hyper-V oder VMware anstatt für eine Startdiskette erstellen. Stellen Sie sicher, dass Sie sie sehr sicher an einem Ort aufbewahren, den Ihr Nachfolger finden kann, und drehen Sie sie regelmäßig offline, um sicherzustellen, dass es ausgeführt wird, oder übertragen Sie es auf neue Medien / Technologien. Eine Stammzertifizierungsstelle kann eine Lebensdauer von 10 oder 20 Jahren haben ...

dunxd
quelle
+1 OpenSSL ist nicht das führende Tool zum Erstellen einer Zertifizierungsstelle, funktioniert jedoch im Allgemeinen. Ich habe kein Sub-CA-Zertifikat für eine Windows Enterprise-Zertifizierungsstelle ausgestellt, kann mir aber nicht vorstellen, warum es nicht funktioniert (obwohl MS in der Vergangenheit ungeheuerlichere wettbewerbswidrige Handlungen begangen hat). Big +1 für CA als VM. Es ist eine gute Idee, eine zweite Kopie des Stammzertifikats aufzubewahren (Base64 auf Papier ist sehr haltbar und einfach in einem Safe / Schließfach / usw.
Chris S
Ich war ziemlich zufrieden mit mir selbst, als mir klar wurde, dass ich eine VM ohne NICs einrichten und einfach ein virtuelles Diskettenlaufwerk verwenden konnte, um CSRs zu aktivieren und Zertifikate zu signieren. Sneakernet mit virtuellem Glanz des 21. Jahrhunderts wiedergeboren!
Dunxd