Wie erstelle ich ein Windows Localhost-Zertifikat basierend auf einer lokalen Zertifizierungsstelle?

0

Bei meinen Versuchen zu verstehen, wie TLS-Zertifikate unter Windows funktionieren, habe ich keine einfache und umfassende Anleitung gefunden, aber ich habe einige notwendige Schritte ausgeführt.

Zunächst konnte ich den OpenSSL-Befehl als OpenSSL Light Stable von slproweb.com/products/Win32OpenSSL.html herunterladen. Kurze Beschreibungen der Unterbefehle finden Sie unter https://www.openssl.org/docs/man1.1.0/apps/ . Ich habe den OpenSSL- Ordner bin zu System> Eigenschaften> Erweitert> Umgebungsvariablen> Systemvariablen> Pfad hinzugefügt , damit der Befehl "OpenSSL" in einem Admin-Eingabeaufforderungsfenster funktioniert.

Als Nächstes habe ich unter deliciousbrains.com/ssl-certificate-authority-for-local-https-development/ gelernt, wie eine Zertifizierungsstelle (Certificate Authority, CA) für die lokale Verwendung erstellt wird. Dies führte dazu, dass eine erstellte CRT-Datei am Speicherort des Computers "Vertrauenswürdige Stammzertifizierungsstellen" gespeichert wurde, die von lokalen Browsern beim Zugriff auf HTTPS-Webseiten verwendet wird. Dieses neue CA-Zertifikat finden Sie in der Computerverwaltungskonsole> Zertifikate (die möglicherweise als neues MMC-Snap-In hinzugefügt werden müssen) oder unter Zertifikate anzeigen in den Optionen in einem beliebigen Browser oder mithilfe des sehr nützlichen Windows-Befehls certutil .

Die spezifischen Befehle, die in einer Admin-Eingabeaufforderung (% windir% \ system32 \ cmd.exe) zum Erstellen einer lokalen Zertifizierungsstelle verwendet werden, lauten:

  1. Wählen Sie eine geheime Passphrase aus und geben Sie sie an, wenn Sie dazu aufgefordert werden.
  2. Generiere privaten Schlüssel: openssl genrsa -des3 -out CA_NAME.key 2048
  3. Generieren Sie ein PEM-Zertifikat mit dem privaten Schlüssel: openssl req -x509 -new -nodes -key CA_NAME.key -sha256 -days 1825 -out CA_NAME.pem
  4. Erstellen Sie das Zertifikat der Stammzertifizierungsstelle: openssl x509 -outform der -in CA_NAME.pem -out CA_NAME.crt
  5. Installieren Sie das CA-Stammzertifikat auf dem lokalen Computer: Klicken Sie mit der rechten Maustaste auf "CA_NAME.crt" und wählen Sie "Assistent zum Installieren des Zertifikatimports"> "Lokaler Computer"> "Durchsuchen ..."> "Vertrauenswürdige Stammzertifizierungsstellen"

Hinweis: Mir ist nicht klar, welche dieser Passphrasen und generierten Dateien jemals wieder benötigt werden und zu welchem ​​Zweck. Das gespeicherte CA-Zertifikat wird eindeutig als Stamm für weitere spezifische Zertifikate auf dem aktuellen Computer verwendet.

Als Nächstes stelle ich die Frage, wie Sie ein Serverautorisierungszertifikat für eine oder mehrere Websites in der localhost-Domäne (Beispiele: localhost / MY_WEBSITE, localhost / FOLDER / FILE.html) basierend auf dem neu installierten vertrauenswürdigen CA-Zertifikat erstellen. Dies würde die fehlerfreie Verwendung von Browser-URLs wie https: // localhost / MY_WEBSITE ermöglichen , vorausgesetzt, der lokale Server wartet auf solche sicheren Webanforderungen .

Ich habe mehrere Algorithmen gefunden, aber sie scheinen alle veraltet oder unvollständig zu sein. Es ist klar, dass ein Teil dieses Algorithmus die Erstellung einer "SAN" -Datei sein muss, die die Liste der zu autorisierenden Websites enthält, und dass ein anderer Teil eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) sein muss.

Kann jemand bitte einen solchen Algorithmus bereitstellen, eine Liste von Schritten wie die obige, um ein localhost-Website-Zertifikat auf der Grundlage eines vorhandenen lokalen CA-Zertifikats zu erstellen und zu installieren, das wie oben erstellt wurde? Bitte testen Sie Ihre Vorschläge, bevor Sie antworten.

David Spector
quelle
Steffen, danke. Welche dieser drei nicht stimmberechtigten Teilantworten empfehlen Sie? Keiner scheint richtig oder vollständig zu sein. Ich suche nach einer Antwort, die funktioniert, die getestet wurde und so viele Details enthält, wie in meiner Frage enthalten sind. Nichts davon scheint zuverlässig zu sein,
David Spector
"Welche dieser drei nicht stimmberechtigten Teilantworten empfehlen Sie?" - Ich habe keine Ahnung, wovon du sprichst. Die Frage, mit der ich verknüpft bin, enthält nur eine einzige Antwort, die erklärt, wie ein SAN-Zertifikat erstellt wird, wenn Sie bereits über das CA-Zertifikat verfügen (das Sie bereits erstellt haben).
Steffen Ullrich

Antworten:

0

OpenSSL benötigt kein Admin-Terminal.

... Mir ist nicht klar, welche dieser Passphrasen und generierten Dateien jemals wieder benötigt werden und zu welchem ​​Zweck.

  • Die CA / ICA-Passphrase wird beim Signieren neuer Zertifikate verwendet, da die CA / ICA immer einen verschlüsselten Schlüssel haben sollte
  • Serverzertifikate sollten niemals einen verschlüsselten Schlüssel haben, da dies dann einen manuellen Eingriff erfordert
  • Client-Zertifikate mit einem verschlüsselten Schlüssel fordern bei jeder Verwendung des Zertifikats die Passphrase an.


... Als Nächstes stelle ich hier die Frage, wie ein Serverautorisierungszertifikat für eine oder mehrere Websites in der localhost-Domäne erstellt werden kann

Dies erfolgt über SAN-Profile.

  • Die Standardeinstellung openssl.cnf von OpenSSL ist für jemanden, der sie nicht kennt, ziemlich schwierig zu analysieren. Deshalb habe ich vor einigen Jahren eine benutzerdefinierte, leicht verständliche openssl.cnf auf meinem GitHub erstellt
    • Zeile 164: SAN-Profile beginnen
    • Zeile 260: V3-Profile beginnen
    • Zeile 430: Alle erforderlichen Befehle und Informationen beginnen


... Kann jemand bitte einen solchen Algorithmus bereitstellen, eine Liste von Schritten wie die obige, um ein localhost-Website-Zertifikat auf der Grundlage eines vorhandenen lokalen CA-Zertifikats zu erstellen und zu installieren, das wie oben erstellt wurde?

Um die Dinge vernünftig zu halten, verwende ich V3-Profile, die in meiner verlinkten openssl.cnf oben enthalten sind

  1. Erforderliche Verzeichnisse erstellen:

    mkdir ca\csr certs crl keys
  2. Erforderliche Dateien erstellen:

    echo 00 > crl\crlnumber && type NUL > index && type NUL > rand && echo 00 > serial
  3. CA erstellen

    openssl req -x509 -new -sha512 -days 3650 -newkey rsa:4096 -keyout ca\ca.key.pem -out ca\ca.crt.pem -config .\openssl.cnf -extensions v3_ca
    • CA Key Passphrases: Mindestens 20 Zeichen, bestehend aus 2: Großbuchstaben, Kleinbuchstaben, Zahlen und Symbolen

      1. Server Cert CSR generieren:

        openssl req -out ca\csr\server.csr -new -days 3650 -sha512 -newkey rsa:2048 -keyout keys\server.key.pem -config .\openssl.cnf -extensions v3_sophos -nodes
      2. Zertifikat mit CA erstellen und signieren:

        openssl x509 -req -sha512 -days 3650 -in ca\csr\server.csr -CA ca\ca.crt.pem -CAkey ca\ca.key.pem -CAserial .\serial -out certs\server.crt.pem -extfile .\openssl.cnf -extensions v3_sophos
      3. CA mit Cert verknüpfen:

        type ca/ca.crt.pem >> certs/server.crt.pem
      4. Export nach PKCS12:

        openssl pkcs12 -export -out certs\server.p12 -inkey certs\server.key.pem -in certs\server.crt.pem -certfile ca\ca.crt.pem


zusätzliche Information

JW0914
quelle