Die Browserlüge oder ein Wörtchen zur Sicherheit

An dem Tag als ich diesen Artikel schreibe, läuft das Zertifikat am 8. April 2018 aus.  Es weisst sich durch 03:42:D4:47:93:CF:53:D2:1B:75:C6:F2:E9:37:34:66:97:5D und durch aus 79:4B:D3:96:B0:3A:E5:1A:8D:BF:3E:92:B5:78:91:8B:9D:3B:79:D1. Wenn jemand irgendwann später auf diese Webseite kommt, wird es ein anderes Zertifikat sein. Aber nicht deswegen, weil dieses Zertifikat unsicherer geworden wäre, die Verschlüsselung schlechter geworden wäre, sondern alleine deshalb weil die Browser behaupten würden, das ganze wäre unsicherer geworden. Früher habe ich mit selbstsignierten Zertifikaten gearbeitet, bevor die Browser anfingen selbstsignierte Zertifikate als unsicher zu betrachten.

Die Verschlüsselung wird aber dadurch, dass das Zertifikat selbstsigniert ist nicht unsicherer. Der Besucher kann sich nur nicht sicher sein, ob der Server, der ihm antwortet auch wirklich der Server ist, den er besuchen möchte, wenn er niemals dort gewesen ist. Die Verschlüsselung selbst ist aber sicher. Die grünen netten Symbole in den Browsern sagen jetzt allerdings nur eines, dass der Name stimmt. Sprich es ist von dritter Seite überprüft worden, ob die IP-Adresse die im DNS-Server hinterlegt ist auch mit dem Namen übereinstimmt. Die Verschlüsselung läuft also zu dem Namen und das Zertifikat läuft auf den Namen. Das Zertifikat läuft nicht auf die IP-Adresse. Wenn nun jemand den DNS-Server hacken würde, dann kann er sich sofort über letsencrypt so ein grünes Zertifikat besorgen. In dem Moment denkt der Benutzer er wäre sicher, denn da oben ist ja dann das tolle grüne Symbol. In Wirklichkeit aber wäre der Server entführt worden und die Verschlüsselung läuft mit dem gehijackten Server und nicht mit dem Server mit dem man eigentlich kommunizieren wollte. Der Browser gaukelt also eine Sicherheit vor, die gar nicht existiert.

Ein selbstsigniertes Zertifikat das 10 Jahre gültig wäre, könnte auch Serverumzüge überleben. Solange der Inhalt des Servers selbst nicht gehackt würde, wäre die Verschlüsselung auch dann noch sicher, wenn der DNS gehijackt wäre, denn der falsche Server hätte zwar ein grünes Symbol im Browser aber es wäre das falsche Zertifikat. Wer das Zertifikat seines Servers kennt, wüsste also sofort, dass er auf dem falschen Server gelandet ist, wenn er sich nicht auf das grüne Symbol verlässt, sondern auf das selbst bestätigte Zertifikat nach der Ausnahmeregel, die man erstellt hat. Böse gesagt selbst ein abgelaufenes Zertifikat wäre eigentlich sicherer, wenn man dessen Ablaufdatum kennt. Da sich Nutzer aber dann darüber beschweren, dass nichts mehr funktioniert, belässt man es nicht bei dem abgelaufenen Zertifikat und nimmt auch keine selbstsignierten Zertifikate mehr.

Ein anderes Beispiel warum Namenszertifikate jetzt nicht sicherer sind, sind die Art und Weise der Auslieferung. Bei einer Domain betreibe ich zum Beispiel mehrere Maschinen, die den eigentlichen Inhalt ausliefern. Der Endpunkt ist immer die gleiche IP-Adresse und das Zertifikat wird über HA-Proxy ausgeliefert. Dahinter findet der Verkehr dann unverschlüsselt statt. Wenn der Nutzer nun glaubt, er würde sein Passwort verschlüsselt eintippen, dann ist das eigentlich falsch, die Verschlüsselung findet nur bis zum HA-Proxy statt.  Eine Ende-zu-Ende-Verschlüsselung ist also nur vorgegaukelt.
Nähmen wir an, jemand würde es schaffen den DNS-Eintrag von meine.deutsche-bank.de auf die 129.35.230.2 zu entführen und liefert dann ein Zertifikat aus, das im Browser grün angezeigt würde, dann ist nicht sicher, dass wirklich mit der Bank kommuniziert wird. Wäre es nun statt einem Namenszertifikat das gleiche Zertifikat das bei der 160.83.8.78 und bei der 160.83.8.144 ausgeliefert würde, dann könnte ich ja verifizieren, ob dass das echte Zertifikat ist. Vorsichtshalber wird bei der 160.83.8.78 erst gar kein Zertifikat ausgeliefert sondern auf die 160.83.8.144 weitergeleitet. Das eine ist dann deutschebank.de, das zweite dann www.deutsche-bank.de und alles ist ja angeblich grün um dann bei der  129.35.230.2 wieder bei einem anderen Zertifikat zu landen, welches dann meine.deutsche-bank.de ist und das soll dann der Login zum Onlinebanking sein. Das eine Zertifikat läuft im März ab, das andere Zertifikat im September und ich soll jetzt Symantec vertrauen, dass das Zertifikat sicher ist. Hätte die deutsche Bank nun ein selbstsigniertes Zertifikat herausgegeben, das seit 10 Jahren das gleiche ist und nicht jährlich abläuft – um wieviel sicherer wäre dies? Aber da würde sich der Browser ja beschweren, dass das Zertifikat unsicher wäre. In Wirklichkeit wäre ein über Jahre etabliertes Zertifikat, das ich an verschiedenen Stellen abgleichen könnte, ob es wirklich das Zertifikat der Bank ist, wesentlich sicherer.

Stattdessen hat sich die Browserlüge als Geschäftsmodell für Zertifizierer etabliert.