Mit dem letzten Upgrade von Firefox 54 wurde mein selbstsigniertes localhost
SSL-Zertifikat nicht mehr vertrauenswürdig.
Ich habe ein AutoConfigure-Skript für Firefox verwendet, um dieses Zertifikat zu installieren, und die Technik hat erfolgreich funktioniert seit einigen Jahren. Firefox verwendet seinen eigenen Zertifikatspeicher, cert8.db
, der das Zertifikat enthält, überprüft mit Firefox-Einstellungen, Erweitert, Zertifikate, Zertifikate anzeigen, Autoritäten.
Dies ist sowohl auf MacOS als auch auf Windows reproduzierbar. Ich habe ein Musterzertifikat als Referenz beigefügt. Das ist identisch mit dem, das wir installieren würden.
Was hat sich in Firefox 54 geändert? Ich habe das Änderungslogbuch überprüft und finde keine Informationen dazu, wie Zertifikate vertrauenswürdig sind.
Bearbeiten: Link zum Firefox-Fehler, der diese Änderung wahrscheinlich eingeführt hat: firefox
#1294580
Um die von Firefox 54 vorgeschriebenen CA-Kettenanforderungen nachzuahmen, ist Folgendes erforderlich:
Um zu veranschaulichen, wie dies mit Java keytool
gemacht wird, einschließlich der Schritte zum Erstellen privater Schlüsselspeicher:
Danach muss nur das Root-CA-Zertifikat von Firefox akzeptiert werden und kann über die GUI oder über das AutoConfig-Skript importiert werden.
Der SSL-Server muss mithilfe des neuen privaten SSL-Keystores neu gestartet werden, der die Vertrauenskette für die Arbeit mit SSL enthält.
Da my-ssl.jks
die gesamte Kette des Vertrauens enthält my-ca.jks
, my-ca.crt
, my-ssl.crt
und my-ssl.csr
können alle sicher gelöscht werden (vorausgesetzt my-ca.crt
wurde korrekt importiert)
Inspiriert von der Antwort von @tresf und weitgehend basierend auf dem Blogpost How to Erstellen Sie Ihre eigene SSL-Zertifizierungsstelle für lokale HTTPS-Entwicklung von
Brad Touesnard, Ich habe eine Reihe von Befehlen mit openssl
erstellt.
Fügen Sie myCa.pem
zu Ihrem Browser / Schlüsselbund hinzu, um Zertifikaten zu vertrauen, die von Ihrem neuen Stammzertifikat signiert wurden
Fügen Sie example.com.crt
und example.com.key
der Konfiguration Ihres Webservers hinzu, um Anfragen an Ihre Domain zu signieren
Wahrscheinlich möchten Sie ein weiteres selbstsigniertes Zertifikat mit dem Betreff, dem Aussteller und dem öffentlichen Schlüssel erstellen, dem Sie vertrauen möchten. Anstelle von End-Entity-Erweiterungen sollten Sie jedoch angeben, dass es sich um ein CA-Zertifikat mit "basicConstraints: cA" handelt, und dass Zertifikate mit "keyUsage: cRLSign, keyCertSign" ausgestellt werden können. Es kann auch sinnvoll sein, die Erweiterung nameConstraints hinzuzufügen, um sie auf bestimmte Domänen zu beschränken. Wenn Sie dieses Zertifikat der Trust-DB von Firefox hinzufügen, sollte alles wie vorher funktionieren.
Wie @tresf und @Zombaya gesagt haben, benötigt Firefox zwei Zertifikate:
Das Autoritätszertifikat wird verwendet, um das Entwicklungszertifikat zu signieren. Das Entwicklungszertifikat ist an einen HTTP-Port gebunden. Der Web-Server überwacht diesen Port auf Anfragen.
Windows-Entwicklungsumgebung
Andere Antworten erklären, was in Java und Unix-Umgebungen zu tun ist. Hier ist, was ich in meiner Windows-Entwicklungsumgebung mache. Dadurch werden Zertifikate erstellt, denen Firefox, Chrome und Internet Explorer vertrauen:
Überschreiben Sie DNS mit einem Eintrag in der Datei C: \ Windows \ System32 \ drivers \ etc \ hosts.
%Vor%Erstellen Sie die Autorisierungs- und Entwicklungszertifikate, und speichern Sie sie mit PowerShell im Zertifikatspeicher des lokalen Computers. Ersetzen Sie "Brainstorm" durch Ihren Firmennamen und DNS-Eintrag. Führen Sie PowerShell als Administrator aus.
%Vor%Erteilen Sie dem Entwickler die Berechtigung zum Hosten einer Website und eines Dienstes an bestimmten URLs und Ports (über IIS Express). Verwenden Sie den Standard-SSL-Port für die Website, verwenden Sie einen anderen Port für den Service. Warum? IIS Express kann nicht gleichzeitig zwei Anwendungen auf demselben Port hosten, die sich nach Hostnamen unterscheiden. Sie müssen verschiedene Ports verwenden.
%Vor%Wenn Sie die Entwicklerberechtigung für die Host-Website unter URL entfernen müssen:
%Vor%Listen Sie die Zertifikate im lokalen Computerspeicher auf.
%Vor%Kopieren Sie den Fingerabdruck des Entwicklungszertifikats (nicht das Autorisierungszertifikat).
Listen Sie die Zertifikate auf, die an HTTP-Ports gebunden sind. (IIS Express konfiguriert die Ports 44300 - 44399 mit einem eigenen SSL-Zertifikat.)
%Vor%Kopieren Sie die Anwendungs-ID (sie ist für alle IIS Express-Ports 44300 - 44399 identisch). Ersetzen Sie die Website- und Service-Ports, die bereits von IIS Express gebunden sind, durch unser Entwicklungszertifikat (der Certhash ist der Fingerabdruck von oben). Möglicherweise müssen Sie zuerst netsh ausführen, dann den Befehl http eingeben und dann den Befehl add sslcert ... eingeben.
%Vor%Wenn Sie Zertifikate von HTTP-Ports lösen müssen:
%Vor%Konfigurieren Sie in Visual Studio die Datei launchSettings.json des Diensts (im Eigenschaftenordner):
%Vor%Konfigurieren Sie in Visual Studio die Datei launchSettings.json der Website (im Eigenschaftenordner):
%Vor%Navigieren Sie in Firefox zu "about: config" und setzen Sie den Parameter "security.enterprise_roots.enabled" auf "true".
Tags und Links ssl https websocket firefox certificate