web-dev-qa-db-de.com

Chrome NET :: ERR_CERT_AUTHORITY_INVALID-Fehler bei selbstsignierendem Zertifikat in LocalHost

Ich versuche, eine Entwicklungsumgebung auf meinem lokalen PC einzurichten. Da die Produktionswebsite HTTPS unterstützt (wer macht das heutzutage nicht?), Möchte ich dies auch auf dem localhost haben. Ich dachte, es wäre leicht, aber nein.

Ich habe eine XAMP-Installation und bin so eingerichtet, dass ich auf die Website zugreifen kann. Wenn ich jedoch lokal auf eine beliebige Seite der Website gehe, erhalte ich die Chrome-Warnung:

NET :: ERR_CERT_AUTHORITY_INVALID

Ich habe den folgenden Thread verfolgt, um das Problem zu lösen:

Chrome zum Akzeptieren eines selbstsignierten Localhost-Zertifikats verwenden

Ich habe das Zertifikat auch mit dem richtigen Abschnitt für den alternativen Antragstellernamen (SAN) erstellt.

https://deliciousbrains.com/https-locally-ohne-browser-privacy-errors/

Danach habe ich die CER- oder P7B-Datei generiert und in Chrome importiert. Ich habe sowohl Apache als auch Chrome neu gestartet.

Ich habe das Zertifikat in die Trusted Root Certificate Authorities gestellt. Irgendwie entschied sich Chrome jedoch dafür, es in die Intermediate Root Certificate Authorities aufzunehmen ...

Ich benutze Chrome 61, ich hatte das gleiche in 60.

Irgendwie kann ich kein selbstsigniertes Zertifikat installieren und bekomme ständig diese Warnung, die die Entwicklung auf localhost grundsätzlich unmöglich macht ...

Ich verstehe, dass diese Selbstsignatur nicht genau vertrauenswürdig ist, aber es muss einen Weg geben, offline zu entwickeln. Es macht keinen Sinn, dass wir ab sofort Webseiten online erstellen müssen? ...

Irgendwelche Ideen?

18
E.S.

Hier sind meine Anweisungen mit dem KeyStore Explorer-Tool.

Die zwei Dinge, die ich beim Erstellen des Zertifikats vermisst habe, waren:

  • AKID (Authority Key Identifier) ​​- Wählen Sie das gleiche "CN =" aus, das Sie beim Erstellen verwendet haben.
  • Hinzufügen in der Option "Basic Constraints" (Nicht auswählen "ist eine Zertifizierungsstelle")

Ohne diese zwei Dinge gibt Chrome Warnungen/Fehler aus, selbst wenn Sie das selbstsignierte Zertifikat in Ihrem MS-CAPI-PKI-Truststore (als "Trusted Root Authority") installiert haben.

Hier sind die Schritte, die ich verwendet habe.

  1. Anweisungen mit KSE (KeyStore Explorer)
  2. Erstellen Sie ein JKS
  3. Selbstsigniertes Zertifikat erstellen
  4. Öffnen Sie den KeyStore Explorer
  5. Datei | Neu | JKS | OK
  6. Erstellen Sie ein Passwort für Ihre JKS-Datei
  7. Datei | Speichern unter ... | Geben Sie Ihr Passwort ein 
  8. Dateiname eingeben | OK
  9. Werkzeuge | Schlüsselpaar generieren
  10. Wählen Sie Algorithmus und Schlüsselgröße (d. H. 2048) | OK
  11. Gültigkeitszeitraum auswählen (d. H. 5 Jahre) 
  12. Wählen Sie Name (Buchsymbol) | Geben Sie in die Namensfelder | OK
  13. Das heißt "CN = localhost ..."
  14. Erweiterungen hinzufügen (sehr wichtig): Dies bestimmt, welche Art von Zertifikat es sein wird und wie es verwendet werden kann. Dieses Beispiel bezieht sich auf ein Standard-Serverzertifikat mit SSL.
  15. Fügen Sie das Element "Schlüsselverwendung" hinzu
  16. Fügen Sie das Kontrollkästchen Digitale Signatur und Schlüsselverschlüsselung hinzu
  17. Fügen Sie die EKU-Optionen (Extended Key Usage) hinzu
  18. Wählen Sie beide Optionen aus:
  19. TLS-Webclient-Authentifizierung
  20. TLS-Webserver-Authentifizierung
  21. Hinzufügen in den SANs (alternativer Antragstellername)
  22. Fügen Sie alle erforderlichen DNS-Namen und IP-Adressen (falls zutreffend) hinzu, für die dieser Server verwendet wird. (für alle gewünschten Werte wiederholen) (z. B. 127.0.0.1 und localhost (oder)
  23. Es wird ungefähr so ​​aussehen, wenn es fertig ist
  24. Anschließend werden alle Felder angezeigt, in denen die OIDs (Object Identifiers) aufgeführt sind OK | OK
  25. Hinzufügen in der AKID (Authority Key Identifier)
  26. Erweiterungen hinzufügen "+"
  27. Erweiterungstyp hinzufügen | Berechtigungsschlüsselkennung
  28. Wählen Sie den Authority Cert Issuer des CN aus, den Sie oben erstellt haben (z. B. "CN = localhost ...") | OK
  29. Hinzufügen einer "Grundbedingung" (NICHT "Betreff ist eine Zertifizierungsstelle" aktivieren)
  30. Wenn Sie fertig sind, werden diese angezeigt: Klicken Sie auf "OK".
  31. Hinweis: Die grundlegenden Einschränkungen und die AKID (Authority Key Identifer) werden für den Chrome Browser benötigt, um das selbstsignierte Zertifikat als vertrauenswürdiges Zertifikat zu überprüfen. 
  32. Andernfalls werden Warn- oder Fehlermeldungen angezeigt, auch wenn Sie dieses Zertifikat explizit Ihren MS-CAPI Trusted Root-Zertifikaten hinzugefügt haben.
  33. Geben Sie im Alias ​​des zu verwendenden Schlüsselpaars den Namen ein
  34. Geben Sie das private Schlüsselpaar ein
  35. * Hinweis: Dieses Kennwort MUSS mit dem Keystore-Kennwort der JKS-Datei identisch sein. Andernfalls schlägt Java möglicherweise fehl, wenn Sie versuchen, dieses Zertifikat zu verwenden.
  36. Sie sollten eine Meldung sehen, die den Erfolg angibt. | OK 
  37. Speichern Sie dann die Datei | sparen
5
atom88

Ich habe mein genaues Problem mit this behoben. 

Das Problem schien die Erstellung des Zertifikats zu betreffen.

Der folgende Code stammt von der oben genannten Website. 

#!/usr/bin/env bash
mkdir ~/ssl/
openssl genrsa -des3 -out ~/ssl/rootCA.key 2048
openssl req -x509 -new -nodes -key ~/ssl/rootCA.key -sha256 -days 1024 -out ~/ssl/rootCA.pem


#!/usr/bin/env bash
Sudo openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

Sudo openssl x509 -req -in server.csr -CA ~/ssl/rootCA.pem -CAkey ~/ssl/rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

datei server.csr.cnf

[req]
default_bits = 2048
Prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
[email protected]omain.com
CN = localhost

v3.ext-Datei

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
2
Temp O'rary

Es gibt ein großartiges GUI Java-basiertes Dienstprogramm, das ich zum Erstellen und Bearbeiten aller PKI-Elemente namens KeyStore Explorer verwende. So viel einfacher als alle Befehlszeilenoptionen:

http://keystore-Explorer.org/

1
atom88