Firefox 54 Das Vertrauen auf selbstsignierte Zertifikate wurde gestoppt

9

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

%Vor%     
tresf 14.06.2017, 17:17
quelle

4 Antworten

5

Um die von Firefox 54 vorgeschriebenen CA-Kettenanforderungen nachzuahmen, ist Folgendes erforderlich:

  1. Schlüsselpaar, das als Root-CA gekennzeichnet ist und ein SSL-Zertifikat generieren kann.
  2. Zweites Schlüsselpaar für SSL, das ein verkettetes Zertifikat von der Stammzertifizierungsstelle erhält

Um zu veranschaulichen, wie dies mit Java keytool gemacht wird, einschließlich der Schritte zum Erstellen privater Schlüsselspeicher:

%Vor%

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)

    
tresf 20.06.2017, 20:12
quelle
2

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.

%Vor%

Wie Sie diese Dateien verwenden

1. Lassen Sie Ihre CA von Ihrem Browser / Schlüsselbund

vertrauen

Fügen Sie myCa.pem zu Ihrem Browser / Schlüsselbund hinzu, um Zertifikaten zu vertrauen, die von Ihrem neuen Stammzertifikat signiert wurden

2. Unterschreiben Sie Anforderungen mit Ihrem Zertifikat

Fügen Sie example.com.crt und example.com.key der Konfiguration Ihres Webservers hinzu, um Anfragen an Ihre Domain zu signieren

    
Zombaya 14.02.2018 15:54
quelle
0

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.

    
David Keeler 15.06.2017 21:41
quelle
0

Wie @tresf und @Zombaya gesagt haben, benötigt Firefox zwei Zertifikate:

  • Ein Autorisierungszertifikat
  • Ein Entwicklungszertifikat

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".

    
Erik Madsen 29.03.2018 19:35
quelle