Vor kurzem hat Chrome die Arbeit mit meinen selbstsignierten SSL-Zertifikaten eingestellt und hält sie für unsicher. Wenn ich mir das Zertifikat auf der DevTools | Security
Registerkarte ansehe , kann ich sehen, dass es steht
Alternativer Betreffname fehlt Das Zertifikat für diese Site enthält keine alternative Betreffname-Erweiterung, die einen Domänennamen oder eine IP-Adresse enthält.
Zertifikatfehler Es gibt Probleme mit der Zertifikatkette der Site (net :: ERR_CERT_COMMON_NAME_INVALID).
Wie kann ich das beheben?
google-chrome
ssl
https
pkix
Brad Parks
quelle
quelle
CN=www.example.com
ist wahrscheinlich falsch. Hostnamen werden immer im SAN gespeichert . Wenn es im CN vorhanden ist , muss es auch im SAN vorhanden sein (in diesem Fall müssen Sie es zweimal auflisten). Weitere Regeln und Gründe finden Sie unter Wie signieren Sie eine Zertifikatsignierungsanforderung bei Ihrer Zertifizierungsstelle und wie erstellen Sie ein selbstsigniertes Zertifikat mit openssl? Sie müssen das selbstsignierte Zertifikat auch im entsprechenden Trust Store ablegen.Antworten:
Um dies zu beheben, müssen Sie
openssl
beim Erstellen des Zertifikats grundsätzlich einen zusätzlichen Parameter angeben-sha256 -extfile v3.ext
wo
v3.ext
ist eine Datei , wie so mit%%DOMAIN%%
ersetzt mit dem gleichen Namen , den Sie als Ihre verwendenCommon Name
. Mehr Infos hier und hier . Beachten Sie, dass Sie normalerweise dasCommon Name
und%%DOMAIN%%
auf die Domäne festlegen, für die Sie ein Zertifikat generieren möchten. Wenn jawww.mysupersite.com
, würden Sie das für beide verwenden.v3.ext
Hinweis: Skripte, die dieses Problem beheben und vollständig vertrauenswürdige SSL-Zertifikate zur Verwendung in Chrome, Safari und von Java-Clients erstellen, finden Sie hier
Ein weiterer Hinweis : Wenn Sie nur versuchen möchten, zu verhindern, dass Chrome beim Anzeigen eines selbstsignierten Zertifikats Fehler auslöst, können Sie Chrome anweisen, alle SSL-Fehler für ALLE Websites zu ignorieren, indem Sie es mit einer speziellen Befehlszeilenoption starten, wie hier beschrieben auf SuperUser
quelle
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext
. Natürlich müssen Sie das nochv3.ext
in einer Datei im selben Ordner speichern.unknown option -extfile
. Wie behebe ich das?extfile
Direktive im falschen Befehl openssl? Anstatt es in zu verwendenopenssl req -new ...
, wird es in verwendetopenssl x509 -req ...
. Zumindest hat das hier jemand gesagt , was aus dem Beispiel hervorgeht, das ich in einer anderen Antwort auf eine ähnliche Frage zur vollständigen Generierung dieser Zertifikate habeFolgende Lösung hat bei mir auf Chrom 65 ( ref ) funktioniert -
Erstellen Sie eine OpenSSL-Konfigurationsdatei (Beispiel: req.cnf)
Erstellen Sie das Zertifikat, das auf diese Konfigurationsdatei verweist
quelle
basicConstraints = CA:true
nicht?Bash Script
Ich habe ein Bash-Skript erstellt , um das Generieren von selbstsignierten TLS-Zertifikaten zu vereinfachen, die in Chrome gültig sind.
Getestet
Chrome 65.x
und es funktioniert immer noch. Stellen Sie sicher, dass Sie Chrome nach der Installation neuer Zertifikate neu starten.Andere Ressourcen
Ein weiteres (viel robusteres) Tool, das es wert ist, überprüft zu werden, ist das CloudFlare-
cfssl
Toolkit:quelle
Ich benutze einfach den
-subj
Parameter, der die IP-Adresse des Computers hinzufügt. Also nur mit einem Befehl gelöst.Sie können andere Attribute wie C, ST, L, O, OU, emailAddress hinzufügen, um Zertifikate zu generieren, ohne dazu aufgefordert zu werden.
quelle
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"
IIS benötigt dann*.pfx
Format:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
Ich hatte so viele Probleme damit, selbstsignierte Zertifikate für MacOS / Chrome zu erhalten. Schließlich fand ich Mkcert: "Ein einfaches Zero-Config-Tool zum Erstellen lokal vertrauenswürdiger Entwicklungszertifikate mit beliebigen Namen." https://github.com/FiloSottile/mkcert
quelle
Erstellen Sie eine Kopie Ihrer OpenSSL-Konfiguration in Ihrem Home-Verzeichnis:
oder unter Linux:
Fügen Sie
openssl-temp.cnf
unter[v3_ca]
:Ersetzen Sie
localhost
durch die Domäne, für die Sie dieses Zertifikat generieren möchten.Zertifikat generieren:
Sie können dann löschen
openssl-temp.cnf
quelle
Ich konnte (net :: ERR_CERT_AUTHORITY_INVALID) durch Ändern des DNS.1-Werts der v3.ext-Datei entfernen
[alt_names] DNS.1 = domainname.com
Ändern Sie domainname.com mit Ihrer eigenen Domain.
quelle
Auf MAC ab Chrome Version 67.0.3396.99 funktioniert mein selbstsigniertes Zertifikat nicht mehr.
Die Regeneration mit all dem, was hier geschrieben wurde, hat nicht funktioniert.
AKTUALISIEREN
hatte die Gelegenheit zu bestätigen, dass mein Ansatz heute funktioniert :). Wenn es bei Ihnen nicht funktioniert, stellen Sie sicher, dass Sie diesen Ansatz verwenden
kopiert von hier https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
END UPDATE
schließlich konnte grün Sichere nur sehen , wenn entfernt mein cert von System , und hinzugefügt , es zu lokalen Schlüsselanhängern. (Wenn es eine gibt - lassen Sie sie zuerst fallen). Ich bin mir nicht sicher, ob es wichtig ist, aber in meinem Fall habe ich das Zertifikat über Chrome heruntergeladen und überprüft, ob das Erstellungsdatum heute ist - es ist also das, das ich gerade erstellt habe.
Ich hoffe, es ist hilfreich für jemanden, der gerne einen Tag damit verbringt.
Chrome niemals aktualisieren!
quelle
Hier ist eine sehr einfache Möglichkeit, ein IP-Zertifikat zu erstellen, dem Chrome vertraut.
Die Datei ssl.conf ...
Wobei natürlich 192.168.1.10 die lokale Netzwerk-IP ist, der Chrome vertrauen soll.
Erstellen Sie das Zertifikat:
Importieren Sie unter Windows das Zertifikat auf allen Clientcomputern in den Trusted Root Certificate Store. Laden Sie auf Android Phone oder Tablet das Zertifikat herunter, um es zu installieren. Jetzt vertraut Chrome dem Zertifikat unter Windows und Android.
Unter Windows Dev Box ist der beste Ort, um openssl.exe abzurufen, "c: \ Programme \ Git \ usr \ bin \ openssl.exe".
quelle
Wenn Sie Ihren Server localhost ausführen möchten, müssen Sie Setup
CN = localhost
undDNS.1 = localhost
.quelle