Blog Ein paar Gedanken zu SSL Zertifikaten

Eingestellt am 11. November 2015 um 19:27 von B1n0ry0 Kommentare

Selbstsigniertes Zertifikat in Chrome

Wer eine Webseite betreibt sollte sich auch darüber Gedanken machen, diese sinnvoll abzusichern. Das Verwenden starker Passwörter zählt allgemein zu den bekanntesten Sicherheitsmaßnahmen. Darauf weist uns mittlerweile fast jede Webseite hin, auf der wir uns registrieren. Doch die Verwendung starker Passwörter allein reicht (bei Webseiten) nicht aus, um unsere Identität im Internet zu schützen.

Um das zu verstehen muss man sich einmal vergegenwärtigen, wie Daten im Internet übertragen werden. Zum Transport von Daten zwischen Computern in einem Netzwerk (beispielsweise dem Internet) wurden verschiedene Protokolle entwickelt. Für die Auslieferung von Webseiten wird auf das 1991 entwickelte Hypertext Transfer Protocol (HTTP) zurückgegriffen. Das Problem dabei ist, dass die Daten (gehen wir der Einfachheit halber von einer Nachricht aus) mit HTTP unverschlüsselt durch das Netzwerk geschickt werden und dadurch alle Computer, die am Transport der Nachricht beteiligt sind, diese lesen können.

Das ist in den seltensten Fällen erwünscht. Als Sender der Nachricht möchte man natürlich, dass nur der von einem bestimmte Empfänger die Nachricht lesen kann. Womit wir wieder bei den angesprochenen Passwörtern wären: Wenn wir auf einer Webseite unser Passwort eingeben, dann möchten wir, dass niemand außer dem Server der Webseite dieses Passwort bekommt. Wird das Passwort auf dem Weg zum Zielserver mitgelesen, kann es noch so lang sein: Das Passwort „passwort123“ ist genauso einfach mitzulesen wie eine 64 Zeichen lange Kombination aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen.

Der Unterschied zwischen HTTP und HTTPS

Neben HTTP gibt es seit 1994 aber auch HTTPS, wobei das S für secure steht. Wie der Name andeutet ist dieses Protokoll dazu in der Lage, Daten sicher durch das Netzwerk zu schicken. Es findet dabei eine Ende-zu-Ende Verschlüsselung statt, das heißt dass nur der Browser und der Zielserver wissen, was in der Nachricht steht. Alle am Datentransport beteiligten Maschinen sowie Netzwerk-Sniffer (Programme zum Mitlesen des Netzwerkverkehrs bzw. deren Benutzer) sehen die Nachricht nur verschlüsselt. Die Verschlüsselung basiert auf einem asymetrischen Kryptographieverfahren, wofür zwei Schlüssel, der Public-Key und der Private-Key, benötigt werden. Der öffentliche Schlüssel steht jedem durch das SSL-Zertifikat der Webseite zur Verfügung während der private Schlüssel nur dem Server bekannt sein darf.

Wenn die Verwendung von HTTPS gegenüber HTTP also sicherer ist, warum verwenden nicht mehr Seiten das sichere Protokoll? Entsprechende Schlüsselpaare lassen sich schließlich ganz einfach selbst generieren. Auch die Zertifikate, in denen der öffentliche Schlüssel enthalten ist, sind schnell selbst erstellt. Zertifikate müssen allerdings noch digital signiert werden. Hier ist der Knackpunkt: Obwohl auch das Signieren des Zertifikats selbst durchgeführt werden kann, wodurch eine vollkommen funktionsfähige und sichere HTTPS-Verbindung erzielt wird, wird es von keinem Serverbetreiber gemacht. Zumindest sieht man im Internet keine Webseiten, bei denen das der Fall sind. Zu erkennen sind die nämlich sehr einfach. Das Titelbild oben zeigt Chromes Darstellung einer solchen Warnung.

Selbstsignierte Zertifikate sind böse!

Der Browser warnt uns, dass die Verbindung zur Webseite (in dem Fall eine Unterseite von activegaming.de, zu Demonstrationszwecken) unsicher sei. Weiter noch, es bestehe möglicherweise die Gefahr eines Datendiebstahls.

Erst nach einem Klick auf „Erweitert“ bekommen wir die Option, die Webseite trotzdem aufzurufen. Die Verbindungsinformationen (Klick auf das Schlosssymbol in der Addressleite -> Verbinfung) zeigen uns jedoch an, dass die Verbindung tatsächlich verschlüsselt ist. Die Warnung bezieht sich auch gar nicht auf die Verschlüsselung, sondern darauf, dass die Identität des Zertifikatausstellers unbekannt ist.

Es kann nämlich jeder für jede Domain (Webseite) ein Zertifikat ausstellen. Aber nur die Zertifikate, die von den „Großen der Branche“ (zum Beispiel Comodo und GeoTrust) signiert wurden, gelten als „sicher“, da diese CAs ein Zertifikat nur für den tatsächlichen Besitzer der Domain signieren. Diese Verifizierung erfolgt meist über eine Nachricht mit einem Bestätigungscode an eine E-Mailaddresse der Domain, zum Beispiel admin@activegaming.de. Wenn der Antragsteller den Code aus der Mail eingeben kann, ist er als Besitzer anerkannt. Weil diese Überprüfung bei selbstsignierten Zertifikaten nicht nachweisbar ist, gelten diese als „unsicher“ – obwohl sie die Daten verschlüsseln.

Ist keine Verschlüsselung zu verwenden besser?

Man kann jetzt argumentieren, dass die vom Browser angezeigte Warnung ja dann sinnvoll ist, um den Nutzer zu schützen. Seine Daten werden zwar verschlüsselt an den Zielserver gesendet, aber möglicherweise an den falschen (durch eine Manipulation). In dem Fall denkt der Nutzer, seine Daten würden sicher zum gewünschten Empfänger transportiert werden, obwohl sie in Wahrheit sicher zum falschen Empfänger transportiert werden. Die Warnung hat also tatsächlich eine Daseinsberechtigung, denn, ich wiederhole: Daten verschlüsselt, aber möglicherweise falscher Empfänger. Zurück zu HTTP: Wie eingangs erläutert ist dieses Protokoll unverschlüsselt, und auch hier kann durch Manipulation am DNS der Empfänger der Daten verändert werden. Trotzdem wird die Webseite ohne Warnung sofort angezeigt.

Die Möglichkeit, ein selbstsigniertes Zertifikat für eine representative Webseite zu verwenden entfällt damit. Denn diese Warnungen erfüllen meist ihren Zweck und schrecken Besucher davon ab, eine Webseite aufzurufen. Zumal das Ignorieren der Warnung bei Chrome noch versteckt ist und die Aufmerksamkeit auf den großen blauen „Zurück zu sicherer Website“-Button gezogen wird. Die Browserhersteller sollen sich entscheiden: Entweder, sie reduzieren die Warnungen auf ein Minimum und formulieren sie wahrheitsgetreu. Oder sie zeigen bei jeder HTTP Webseite eine Warnung an. Letzteres würde dazu führen, dass sich binnen kürzester Zeit niemand mehr für Sicherheitshinweise seines Browser interessiert. Der erste Fall wird allerdings nicht eintreten, solange die großen CAs weiterhin Unsummen an die Browserhersteller zahlen, damit ihre Zertifikate von den Browsern akzeptiert werden.

Ja, es gibt auch kostenlose SSL-Zertifikate. Wir verwenden beispielsweise auch eines, und es ist sehr empfehlenswert insbesondere für Betreiber kleiner Webseiten, die trotzdem sicher Passwörter übertragen möchten (zum Beispiel beim WordPress-Login), diese kostenlosen Angebote zu nutzen.