
Ich möchte eine Unternehmenszertifizierungsstelle für meine Domäne einrichten. So kann ich Zertifikate für verschiedene Zwecke ausstellen. Ich möchte der bewährten Vorgehensweise folgen und eine Offline-CA als Stamm verwenden und meine Unternehmens-CA als untergeordnete einrichten. Es erscheint mir jedoch unsinnig, für diese Aufgabe eine Vollversion von Windows zu lizenzieren.
Ich hoffe, dass ich eine Live-Distribution auf einem USB-Flash-Laufwerk installieren und dann OpenSSL installieren und meine Zertifizierungsstelle auf dem Flash-Laufwerk einrichten kann. Wenn ich bereit bin, den Root-Schlüssel/das Root-Zertifikat zu erstellen, trenne ich den Computer vom Netzwerk und verwende dieses USB-Laufwerk nie wieder auf einem an das Netzwerk angeschlossenen Computer.
Kann ich ein untergeordnetes CA-Zertifikat für eine Windows Enterprise-CA ordnungsgemäß signieren und erstellen, das verwendbar ist? Welche Optionen muss ich mit OpenSSL verwenden, um die CA zu erstellen und das untergeordnete CA-Zertifikat ordnungsgemäß zu signieren?
Ich habe versucht, im Internet zu suchen, und dieDaswar das Einzige, was ich zu diesem Thema finden konnte. Aber es stammt aus der Zeit vor 2008 und ich bin mir nicht ganz sicher, ob die Person jemals erfolgreich war.
Antwort1
Jupp, es funktioniert einwandfrei; eine Windows-Zertifizierungsstelle hat keine Bedenken, als Untergeordneter einer Nicht-Windows-Root zu laufen.
Getestet mit einer OpenSSL-Root und einem Windows 2008 R2-Untergeordneten im Enterprise-Modus.
Ein paar Dinge, um gut mit dem zu harmonieren, was die MS CA in der OpenSSL-Konfiguration erwartet:
Gültige AIA- und CDP-Standorte sollten für das Stammzertifikat gelten, und zwar in dem Abschnitt, der durch die
x509_extensions
Eigenschaft des[req]
Abschnitts für das selbstsignierte Stammzertifikat konfiguriert wurde. Etwa so:authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
Eine bestimmte OpenSSL-Konfiguration lässt wahrscheinlich standardmäßig keine untergeordneten CAs zu. Ändern Sie dies für signierte Anfragen (stellen Sie natürlich sicher, dass dies nicht für Anfragen gilt, die keine CAs sein sollten). Dies befindet sich in dem Abschnitt, der durch die
x509_extensions
Eigenschaft des[ca]
Abschnitts konfiguriert wird:basicConstraints=CA:TRUE certificatePolicies=2.5.29.32.0
Wir werden zum Testen also eine CA durchführen.
Erstellen Sie Ihre Wurzel:
openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca
Spielen Sie mit Ihrer Konfiguration herum und erstellen Sie die erforderlichen Dateien und Verzeichnisse im [ca]
Abschnitt Ihrer OpenSSL-Konfiguration.
Alles ist bereit, um die Microsoft-Seite in Gang zu bringen; erstellen Sie eine untergeordnete Windows-Zertifizierungsstelle mit manueller Signatur.
Laden Sie die Zertifikatsanforderung auf den OpenSSL-Server hoch. Laden Sie bei dieser Gelegenheit auch das Stammzertifikat herunter. Importieren Sie es in den vertrauenswürdigen Stammspeicher – des Computers, nicht Ihres Benutzers!
Untergeordnetes Zertifikat ausstellen:
openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)
Wenn das nicht funktioniert, hat Ihre Zertifizierungsstelle wahrscheinlich ein Problem mit der Konfiguration – neues Zertifikatsverzeichnis, Indexdatei, Seriendatei usw. Überprüfen Sie die Fehlermeldung.
Wenn es funktioniert, war es das. Wenn nicht, erstellen Sie eine CRL und fügen Sie sie in das CDP ein, das Sie oben konfiguriert haben. Ich habe einfach Apache installiert und es in Webroot blockiert:
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 der Zertifizierungsstelle in der Zertifizierungsstelle. Es wird sich über etwaige Probleme mit Vertrauen oder Validierung beschweren, hat aber keine moralischen Einwände, es anzunehmen.
Endergebnis: eine funktionierende Windows-Zertifizierungsstelle ohne Beschwerden vom Enterprise-PKI-Snap-In und mit einem Hinweis OpenSSL Generated Certificate
in den Attributen.
Antwort2
Ich verstehe, worauf Sie hinauswollen, aber ich glaube nicht, dass OpenSSL das richtige Tool für diese Aufgabe ist. Vielleicht möchten Sie sich Folgendes ansehen:Open Source-Zertifizierungsstellenprojektewie zum BeispielEJBCAdie stärker auf diese Funktionalität ausgerichtet sind als OpenSSL und über eine spezifische Dokumentation verfügen, die Sie verwenden können.
Ich sehe keinen Grund, warum das Konzept nicht funktionieren sollte, da Sie lediglich das Zertifikat der untergeordneten Zertifizierungsstelle signieren. Wenn Sie eine öffentliche Zertifizierungsstelle dafür bezahlen würden, dies für Sie zu tun, wüssten Sie nicht unbedingt, welche Art von Server sie verwenden, und es wäre Ihnen auch egal.
Sie müssen lediglich Folgendes beachten:
- Sie können das Zertifikat aus dem von Ihrem Untergebenen generierten CSR signieren
- das Ergebnis kann auf dem Untergebenen selbst installiert werden
- Sie verfügen über ein Stammsignaturzertifikat, das auf allen von Ihnen anvisierten Clients als vertrauenswürdig installiert werden kann
- Sie können eine Sperrliste erstellen, die irgendwo bereitgestellt wird
Ich kann nicht sagen, dass ich das getan habe, aber ich bin sicher, dass alles gut gehen sollte, wenn Sie die Dokumentation zum Generieren einer CSR aus einer Windows-Box befolgen und dann die CA-Dokumentation zum Generieren eines .p7k-Zertifikats aus einer CSR befolgen.
Übrigens - ich würde Ihnen empfehlen, Ihre CA als virtuelle Maschine für einen gängigen Hypervisor wie Hyper-V oder VMware zu erstellen und nicht als Bootdiskette. Stellen Sie sicher, dass Sie sie sehr sicher an einem Ort aufbewahren, an dem Ihr Nachfolger sie finden kann, und starten Sie sie regelmäßig offline, um sicherzustellen, dass sie läuft, oder übertragen Sie sie auf ein neues Medium/eine neue Technologie. Eine Root-CA kann eine Lebensdauer von 10 oder 20 Jahren haben ...