PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSL Probleme mit Firefox/Chrome



Barny
24.08.2017, 10:54
Hi, Leute!

Ich habe ein kleines Problem mit der SSL-Einrichtung eines Webservers, welches ich mir nicht wirklich erklären kann. Der Background ist ziemlich durchwachsen, deswegen versuche ich es mal kur und knapp alles darzulegen.

Die Ausgangssituation:
Ich betreibe in meinem Netzwerk einen Webserver, welcher ein SSL unterstützt. Dies funktioniert tadellos. Habe den Server aufgesetzt, ein Zertifikat erstellt, dieses mit meinem Root-CA signiert und eingespielt. Da mein Root-CA als "nicht vertrauenswürdig" gilt habe ich dieses in Chrome importiert (ist ja auch nur fürs heimische Netzwerk), damit das Zertifikat von meinem Webserver als vertrauenswürdig akzeptiert wird.

Die aktuelle Situation:
Ich wollte einen weiteren Webserver (aber andere Maschine) aufsetzen und bin ähnliche wie oben beschrieben vorgangen, jedoch habe ich ein neues Zertifikat erstellt und dies signieren lassen. Nun habe ich Chrome geöffnet und versucht meine Seite anzusteuern. Die neue Seite wird mir als "nicht vertrauenswürdig" angezeigt, jedoch der in der Ausgangssituation beschriebene Webserver ist immernoch vertrauenswürdig. Ein Blick auf das neu erstellte Zertifikat brachte keine Erkenntnisse. Funktioniert ja auch alles. Die Seite wird mir lediglich als "nicht vertrauenswürdig" angezeigt, obwohl ich das Zertifikat mit demselben zertifikat signiert habe wie das was ich bereits importiert habe.
Da ich nicht so schnell aufgebe wollte ich es untert Firefox probieren. Ich habe also das in Chrome importierte Zertifikat exportiert und in Firefox importiert. Ich kann nun beide Seiten ansteuern und beide gelten in Firefox als vertrauenswürdig. Nicht jedoch in Chrome (wo ich dasselbe Zertifikat exportiert habe).

Wie ist sowas zu erklären? Beide Seiten zeigen das korrekte Zertifikat und sind beide gültig... Warum geht es in Firefox, aber nicht in Chrome?

Viele Grüße,

Barny

Lindor
24.08.2017, 11:33
Was bekommst du denn als konkreten Grund genannt, warum die Seite nicht vertrauenswürdig ist?
Das erste was mir hier (ohne besagte Information) einfällt ist vermutlich Public-Key-Pinning/Certificate-Pinning in irgendeiner Art und Weise.

Benu
24.08.2017, 11:37
Ich schätze mal eine Sicherheitsmaßnahme von Chrome. Könnte mir gut vorstellen dass er die Nutzung von Zertifikaten für mehrere Domains nicht zulässt. Ausgenommen Wildcards.
Ansonsten der klassische Käse. Chrome neu starten, PC neu starten, Zertifikat löschen und wieder importieren (in Chrome), Browserdaten von Chrome zurücksetzen.

Barny
24.08.2017, 11:53
Okay... Ich habe den Fehler gefunden...
Habe mir die ganze Zeit nur das Zertifikat angeschaut. Mit Hilfe der Dev-Tools in Chrome konnte ich dann den eigentlichen Fehler erkennen:

Mit dem Update auf Chrome 58 wurde der Servernamenabgleich mit Hilfe des CN des Zertifikats ersetzt durch den Abgleich sogenannter "Alternative Names". Firefox hingegen gleicht immer noch mit dem Common Name ab. Daher geht es in Firefox, aber nicht in Chrome.
Das ist ja nen richtiger Schlag in die Fresse für jeden Serveradmin. Die müssen ja ggf. alle ihre Zertifikate neu austellen. :D Also ist zumindest jeder gekniffen, der ne eigene CA in nem Firmennetzwerk betreibt und hier mehrere Zertifikate im Einsatz hat.

Wie ich das ganze mit openSSL realisiere weiß ich noch nicht, aber da wird mir denke ich Google bei weiterhelfen oder wenn jemand von euch Lust und Zeit hat.^^ Habe noch nicht nachgeschaut was ich hier nun beachten muss.

Danke für die Hilfe!

Viele Grüße,

Barny

//EDIT:
Kleiner Nachtrag: Ich habe auf nachfolgender Seite eine (meines Erachtens) schöne Lösung gefunden: http://blog.endpoint.com/2014/10/openssl-csr-with-alternative-names-one.html
Hier steht geschrieben:



So here's an example to generate a CSR which will cover *.your-new-domain.com and your-new-domain.com, all in one command:



openssl req -new -sha256 -nodes -out \*.your-new-domain.com.csr -newkey rsa:2048 -keyout \*.your-new-domain.com.key -config <(
cat <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
emailAddress=your-administrative-address@your-awesome-existing-domain.com
CN = www.your-new-domain.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = your-new-domain.com
DNS.2 = www.your-new-domain.com
EOF
)



Also neues Zertifikat erstellt, signieren lassen und auf dem Werver eingespielt. Tatsächlich funktioniert es jetzt. :)

Danke nochmal für die Hilfe!

s3rb31
24.08.2017, 16:21
Heheh, fefe lesen lohnt sich! Hier ein bisschen Background (https://blog.fefe.de/?ts=a7edc554).

PS. Ich oute mich an dieser Stelle klar als Fanboy.