Vor gut einem Jahr hatte ich mir mal den Spaß gemacht, inspiriert vom „SSL Observatory“ der EFF, eine „Landkarte“ der Public-Key-Infrastruktur zu erstellen, die ein Browser verwendet, um TLS-Zertifikate zu validieren. Die Grafik hatte ich dann für eine Seminararbeit zu illustrativen Zwecken verwendet. Weil sie eigentlich ganz interessant ist, habe ich sie jetzt noch einmal neu aufgelegt.
Als Datenbasis diente mir censys.io, die ihre Informationen im Wesentlichen aus zwei Quellen beziehen: scannen sie den gesamten IPv4-Adressraum und zeichnen auf, welche Zertifikate ihnen dabei begegnen, und zweitens stützen sie sich auf die Informationen aus den öffentlichen Certificate-Transparency-Protokollen.
Aus dem Datenbestand von Censys habe ich mir also alle Root- und Intermediate-CAs geben lassen, denen ein Browser auf Basis des Mozilla NSS Certificate Store vertrauen würde. Der Suchbegriff lautet:
validation.nss.valid: true and (validation.nss.type: intermediate or validation.nss.type: root)
Das sind überraschend viele und es ist durchaus interessant mal ein wenig darin herumzustöbern. Damit ihr das auch machen könnt, findet ihr hier ein GraphML-File, das man sich mit yEd anschauen kann. Darin kann man einzelne Verbindungen etwas besser nachverfolgen und sich den Graphen auch nach Belieben rearrangieren (für die hochgeladene Variante habe ich die Option Layout → Baumartig → Ballon verwendet).
Also klickt euch mal rein und seid überrascht, wer wem sein Vertrauen vererbt und wem euer Browser alles vertraut. Ich will mal nicht die 100%ige Korrektheit versprechen, denn wie man sieht, liegen unten rechts im Bild ein paar einzelne Intermediates, die keiner Root zugeordnet sind – es geht also nicht so richtig auf. Aber für eine grobe Übersicht taugt die Grafik denke ich schon.