Eine Zwischenzertifizierungsstelle unter Linux nicht vertrauen?

18

Aus diesem Blog .

Zwischenzertifizierungsstellen sind von einer Stammzertifizierungsstelle signierte Zertifikate, die beliebige Zertifikate für Websites signieren können.

Sie sind genauso leistungsfähig wie Stammzertifizierungsstellen, es gibt jedoch keine vollständige Liste der Zertifizierungsstellen, denen Ihr System vertraut, da Stammzertifizierungsstellen nach Belieben neue Zertifizierungsstellen erstellen können und Ihr System ihnen auf den ersten Blick vertraut. Es sind TAUSENDE in CT eingeloggt.

In diesem Monat tauchte ein interessantes auf, das anscheinend im September 2015 generiert wurde: "Blue Coat Public Services Intermediate CA", unterzeichnet von Symantec. (Bisher haben keine von dieser Zertifizierungsstelle signierten Zertifikate die CT-Protokolle oder Censys erreicht.)

Ich dachte, es wäre eine gute Gelegenheit, um zu beschreiben, wie man einer Zwischenzertifizierungsstelle, die sonst in OS X als vertrauenswürdig eingestuft wird, explizit das Vertrauen verweigert. Dies hindert die Stammzertifizierungsstelle nicht daran, eine neue Zwischenzertifizierungsstelle an dieselbe Organisation weiterzugeben, aber besser als nichts.

Als ich die Schritte im Blog in Ubuntu ausprobierte, lade ich dieses Zertifikat https://crt.sh/?id=19538258 herunter . Wenn ich die .crt-Datei öffne, wird sie in den Gnome-Schlüsselring importiert, aber dann konnte ich keine Möglichkeit finden, das Zertifikat nach dem Import zu "demotivieren".

Raffael
quelle

Antworten:

8

Nur um die Sache zu erschweren, hat Linux mehr als eine Bibliothek für die Arbeit mit Zertifikaten.

Wenn Sie Mozillas NSS verwenden, können Sie einem Zertifikat mit der Option certutil (deren Terminologie) aktiv misstrauen-t trustargs :

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

Für Firefox, <path to directory containing database>ist in der Regel , ~/.mozilla/firefox/<???>.profilewo <???>einige zufällige aussehende Zeichen sind. (certutil ist zB in Ubuntus libnss3-tools-Paket enthalten)

Die Aufteilung ist wie folgt:

-M um die Datenbank zu ändern

-t p um die Vertrauenswürdigkeit auf Verboten zu setzen

-n die Operation mit dem genannten Zertifikat durchzuführen

Selbst innerhalb von NSS nutzen nicht alle Anwendungen dieselbe Datenbank. Möglicherweise müssen Sie diesen Vorgang wiederholen. Um beispielsweise dasselbe für Chrome zu tun, ändern Sie den Namen -d <path>in -d sql:.pki/nssdb/.

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

Da jedoch nicht alle Anwendungen NSS verwenden, ist dies keine vollständige Lösung. Ich glaube beispielsweise nicht, dass dies mit der OpenSSL-Bibliothek möglich ist.

Infolgedessen vertraut jede Anwendung, die OpenSSL zum Erstellen ihrer Zertifikatkette verwendet (TLS, IPSec usw.), einer Kette mit einem Blue Coat-Zertifikat, und Sie können nichts tun, außer die Stammzertifizierungsstelle zu entfernen, von der sie signiert wurde Ihr Vertrauensanker-Speicher (was dumm wäre, wenn es sich um eine Symantec-Stammzertifizierungsstelle handelt, da Sie am Ende die Hälfte des Internets misstrauen würden), wohingegen Anwendungen, die auf NSS basieren, genauer konfiguriert werden können, um jeder Kette zu misstrauen, die das Blue Coat-Zertifikat enthält .

Ich glaube beispielsweise, dass OpenVPN OpenSSL als Bibliothek für Zertifikate verwendet. Daher könnte der große Bruder Ihren OpenVPN-Verkehr ohne Ihr Wissen abhören, wenn Sie eine Verbindung zu einem kommerziellen VPN-Anbieter herstellen, der OpenVPN verwendet. Wenn Sie sich darüber wirklich Sorgen machen, überprüfen Sie, wer die Stammzertifizierungsstelle Ihres kommerziellen VPN-Anbieters ist. Wenn es sich um Symantec / Verisign handelt, ist es möglicherweise an der Zeit, sie für eine andere Person in den Sand zu legen.

Beachten Sie, dass SSH keine X509-Zertifikate verwendet. Sie können sich daher mit SSH verbinden und tunneln, ohne sich über Blue Coat MITM-Angriffe Gedanken machen zu müssen.

garethTheRed
quelle
Ich habe die Frage aktualisiert, um anzuzeigen, dass sie beim Doppelklicken auf das Zertifikat in den Gnomschlüsselring importiert wurde. In meiner Antwort unten habe ich einen Weg gefunden, es in Firefox zu importieren.
Raffael
Wäre das Entfernen des Zertifikats für OpenSSL nicht dasselbe wie das Aufheben des Vertrauens? Es kann nur Zertifikate validieren, die es kennt.
Bratchley
1
@Bratchley - Was passiert, wenn das verdächtige Zertifikat als Teil des TLS-Handshakes gesendet wurde (wie es sein sollte)? Es wäre einfach vertrauenswürdig, es sei denn, es gibt eine Möglichkeit (wie bei Mozilla NSS, Windows & OS-X), darauf zu bestehen, dass es immer nicht vertrauenswürdig ist.
garethTheRed
@garethTheRed Es fehlt möglicherweise etwas, aber wenn für die Bibliothek die Überprüfung des Zertifikats erforderlich ist, wird das Problem dann weder durch Ausführen einer CRL noch durch Entfernen der vertrauenswürdigen Stammzertifizierungsstelle behoben. Unabhängig davon, ob es sich um Client- oder Serverzertifikate handelt, sollte eine Validierung erforderlich sein.
Bratchley
1
Ja. Bluecoat wurde von Verisign ein CA- Zertifikat für die Verwendung in Man-in-the-Middle-Geräten ausgestellt. Das OP fragt, wie man diesem Zertifikat misstraut. Es geht also darum, einem untergeordneten Zertifikat zu misstrauen, das die übergeordnete ausstellende Zertifizierungsstelle (in diesem Fall Root) nicht widerruft, wenn Sie, wie Sie sagen, der Root nicht das Vertrauen entziehen möchten (Verisign).
garethTheRed
0

Ich kann noch keinen Kommentar abgeben, daher muss ich hier sagen, dass ich auf Ubuntu Gnome 15.10, wenn ich den Ansatz von @ garethTheRed verwende, Folgendes erhalte:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

Blue Coat Systems, Inc. geht auch nicht

(Dies ist das Zertifikat, das ich importiert habe: https://crt.sh/?id=19538258 )

Diagon
quelle
Haben Sie das Zertifikat zuerst heruntergeladen und importiert?
Raffael
Ja, ich habe diese Datei importiert: crt.sh/?id=19538258 . (Scheint, ich kann jetzt kommentieren! :)
Diagon
Ich denke, Sie können nur Ihre eigene Antwort kommentieren. Ich habe das Verfahren noch nicht ausprobiert.
Raffael
siehe meine
antwort
@raphael - Ich habe versucht, das unten stehende zu bearbeiten, um Sie darauf aufmerksam zu machen: Während der obige Link "-t p" als "verboten (explizit misstrauisch)" beschreibt, wird es in der Ubuntu 15.10-Manpage als "p - Valid peer" beschrieben. Ich hoffe, Sie haben nichts Falsches getan.
Diagon