HTTP-Anfragen und -Antworten werden im Klartext gesendet, sodass jeder sie lesen kann. HTTPS behebt dieses Problem mithilfe von TLS/SSL-Verschlüsselung.
Nach Lektüre dieses Artikels können Sie Folgendes:
Ähnliche Inhalte
Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!
Link zum Artikel kopieren
HTTPS ist HTTP mit Verschlüsselung und Verifizierung.Der einzige Unterschied zwischen den beiden Protokollen besteht darin, dass HTTPS die normalen HTTP-Anfragen und -Antworten mit TLS (SSL) verschlüsselt und diese Anfragen und Antworten digital signiert.Daher ist HTTPS wesentlich sicherer als HTTP. Eine Website, die HTTP verwendet, hat http:// in ihrer URL, während eine Website, die HTTPS verwendet, https:// hat.
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 Ebene-7-Protokoll.
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.
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.
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==
TLS verwendet eine Technologie namens Public-Key-Kryptographie, 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, 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?
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.:
Außerdem wird das SSL-Zertifikat von der Zertifizierungsstelle, die es ausgestellt hat, digital signiert. Damit wird bestätigt, dass der Server derjenige ist, der er vorgibt zu sein.
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?