Warum ist HTTP nicht sicher? | HTTP vs. HTTPS

HTTP-Anfragen und -Antworten werden im Klartext gesendet, sodass jeder sie lesen kann. HTTPS behebt dieses Problem mithilfe von TLS/SSL-Verschlüsselung.

Share facebook icon linkedin icon twitter icon email icon

HTTP-Sicherheit

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Funktionsweise von HTTP verstehen
  • Warum ist HTTP nicht sicher?
  • Was ist der Unterschied zwischen HTTP und HTTPS?
  • So erhalten Sie ein kostenloses SSL-Zertifikat für HTTPS

HTTP vs. HTTPS: Was sind die Unterschiede?

HTTPS ist HTTP mit Verschlüsselung. Der einzige Unterschied zwischen den beiden Protokollen besteht darin, dass HTTPS TLS (SSL) verwendet, um normale HTTP-Anfragen und -Antworten zu verschlüsseln. Infolgedessen ist HTTPS weitaus sicherer als HTTP. Bei einer Website, die HTTP verwendet, steht http:// in der URL, bei einer Website, die HTTPS verwendet, nur https://.

HTTP vs HTTPS

Was ist HTTP?

HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll – oder eine vorgeschriebene Reihenfolge und Syntax für die Darstellung von Informationen. Es wird zum Übertragen von Daten über ein Netzwerk verwendet. Die meisten Informationen, die über das Internet gesendet werden, einschließlich Website-Inhalten und API-Aufrufen, nutzen das HTTP-Protokoll. Es gibt zwei Hauptarten von HTTP-Nachrichten: Anfragen und Antworten.

In dem OSI-Modell (siehe Was das OSI-Modell?) ist HTTP ist ein Layer-7-Protokoll.

Was ist eine HTTP-Anfrage? Was ist eine HTTP-Antwort?

HTTP-Anfragen werden vom Browser eines Benutzers generiert, wenn der Benutzer mit Websites interagiert. Klickt ein Benutzer beispielsweise auf einen Hyperlink, sendet der Browser eine Reihe von „HTTP GET“-Anfragen für den Inhalt, der auf dieser Seite angezeigt wird. Wenn jemand googelt „Was ist HTTP?“, diesen Artikel in den Suchergebnissen sieht und auf den Link klickt, erstellt und sendet sein Browser eine Reihe von HTTP-Anforderungen, um die zum Rendern der Seite erforderlichen Informationen abzurufen.

Diese HTTP-Anfragen gehen alle entweder an einen Ursprungsserver oder einen Proxy-Caching-Server, und dieser Server generiert eine HTTP-Antwort. HTTP-Antworten sind Antworten auf HTTP-Anfragen.

Wie sieht eine typische HTTP-Anfrage aus?

Eine HTTP-Anfrage besteht nur aus einer Reihe von Textzeilen, die dem HTTP-Protokoll folgen. Eine GET-Anfrage könnte folgendermaßen aussehen:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

Dieser vom Browser des Benutzers generierte Textabschnitt wird über das Internet gesendet. Das Problem ist, dass er einfach so im Klartext gesendet wird und jeder, der die Verbindung überwacht, den Text lesen kann. (Diejenigen, die mit dem HTTP-Protokoll nicht vertraut sind, können mit diesem Text möglicherweise nicht viel anfangen, aber jeder, der über grundlegende Kenntnisse der Befehle und der Syntax des Protokolls verfügt, kann ihn leicht lesen.)

Dies ist insbesondere dann ein Problem, wenn Benutzer vertrauliche Daten über eine Website oder eine Webanwendung senden. Dies kann ein Passwort, eine Kreditkartennummer oder andere in ein Formular eingegebene Daten sein. In HTTP werden all diese Daten im Klartext gesendet, sodass jeder sie lesen kann. (Wenn ein Benutzer ein Formular sendet, übersetzt der Browser dieses in eine HTTP-POST-Anfrage anstelle einer HTTP-GET-Anfrage.)

Wenn ein Ursprungsserver eine HTTP-Anfrage empfängt, sendet er eine HTTP-Antwort, die ähnlich aufgebaut ist:


HTTP/1.1 200 OK
Date: Wed, 30 Jan 2019 12:14:39 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain

Hello World!

Wenn eine Website HTTP anstelle von HTTPS verwendet, können alle Anforderungen und Antworten von jedem gelesen werden, der die Sitzung überwacht. Im Wesentlichen kann ein böswilliger Akteur einfach den Text in der Anfrage oder der Antwort lesen und genau wissen, nach welchen Informationen jemand fragt und was er sendet oder empfängt.

Was ist HTTPS?

Das S in HTTPS steht für „sicher“. HTTPS verwendet TLS (oder SSL), um HTTP-Anfragen und -Antworten zu verschlüsseln. Im obigen Beispiel würde ein Angreifer anstelle des Textes eine Reihe von scheinbar zufälligen Zeichen sehen.

Anstelle von:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

Der Angreifer sieht so etwas wie:


t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

Wie verschlüsselt TLS/SSL in HTTPS HTTP-Anfragen und -Antworten?

TLS verwendet eine Technologie namens Public Key Encryption, die Verschlüsselung mit öffentlichen Schlüsseln: Es gibt zwei verschiedene Schlüssel, einen öffentlichen Schlüssel und einen privaten Schlüssel. Der öffentliche Schlüssel wird über das SSL-Zertifikat des Servers für Clientgeräte freigegeben. Wenn ein Client eine Verbindung mit einem Server herstellt, verwenden die beiden Geräte den öffentlichen und den privaten Schlüssel, um neue Schlüssel, sogenannte Sitzungsschlüssel, zu vereinbaren und die nachfolgende Kommunikation zwischen ihnen zu verschlüsseln.

Alle HTTP-Anfragen und -Antworten werden dann mit diesen Sitzungsschlüsseln verschlüsselt (dies erfolgt auf Layer 6 im OSI-Modell), sodass jeder, der die Kommunikation abfängt, nur eine zufällige Zeichenfolge sehen kann, nicht den Klartext.

Weitere Informationen zur Funktionsweise von Verschlüsselung und Schlüsseln finden Sie unter Was ist Verschlüsselung?

Wie hilft HTTPS bei der Authentifizierung von Webservern?

Authentifizierung bedeutet, zu überprüfen, ob eine Person oder Maschine die sind, für die sie sich ausgeben. In HTTP wird Identität nicht überprüft – es basiert auf einem Vertrauensprinzip. Die Architekten von HTTP haben sich nicht unbedingt dafür entschieden, allen Webservern implizit zu vertrauen. Sie hatten zur Zeit der Entwicklung einfach andere Prioritäten als Sicherheit. Im modernen Internet ist die Authentifizierung jedoch unerlässlich.

So wie ein Personalausweis die Identität einer Person bestätigt, bestätigt ein privater Schlüssel die Serveridentität. Wenn ein Client einen Kanal mit einem Ursprungsserver öffnet (z. B. wenn ein Benutzer zu einer Website navigiert), beweist der Besitz des privaten Schlüssels, der mit dem öffentlichen Schlüssel im SSL-Zertifikat einer Website übereinstimmt, dass der Server tatsächlich der legitime Host der Website ist. Dies verhindert oder hilft, eine Reihe von Angriffen zu blockieren, die ohne eine Authentifizierung möglich wären, z. B.:

Wie ermöglicht Cloudflare Websites die Einführung von HTTPS?

Cloudflare veröffentlichte 2014 Universal SSL und war damit das erste Unternehmen, das SSL-Zertifikate kostenlos zur Verfügung stellte. Jede Website, die für Cloudflare-Dienste angemeldet ist, kann HTTPS aktivieren und sich mit nur einem Klick von HTTP verabschieden. Dadurch werden TLS-Verschlüsselung allgemein verfügbar, um Benutzer und Benutzerdaten im gesamten Internet zu schützen.

Weitere Informationen zu HTTP und HTTPS finden Sie unter Was ist gemischter Inhalt? Um zu testen, ob eine Website HTTPS bietet, besuchen Sie das Cloudflare Diagnostic Center.