Heim  >  Artikel  >  Web-Frontend  >  Was ist der HTTP- vs. HTTPS-Handshake?

Was ist der HTTP- vs. HTTPS-Handshake?

一个新手
一个新手Original
2017-09-08 13:00:401839Durchsuche

Heute habe ich zusammengefasst, was der HTTP-Drei-Wege-Handshake ist, den Prozess des HTTPS-Handshakes und warum HTTPS sicher ist.

Prämisse

Bei der Beschreibung dieser beiden Handshakes gibt es einige Dinge, die im Vorfeld erklärt werden müssen.

Was ist der Unterschied zwischen HTTP und TCP/IP?

Das TPC/IP-Protokoll ist ein Transportschichtprotokoll, das hauptsächlich die Art und Weise löst, wie Daten im Netzwerk übertragen werden, während HTTP ein Anwendungsschichtprotokoll ist, das hauptsächlich die Art und Weise löst, wie Daten verpackt werden. WEB verwendet das HTTP-Protokoll als Protokoll der Anwendungsschicht, um HTTP-Textinformationen zu kapseln, und verwendet dann TCP/IP als Protokoll der Transportschicht, um sie an das Netzwerk zu senden.

Das folgende Diagramm versucht, die Position verschiedener TCP/IP- und anderer Protokolle im ursprünglichen OSI-Modell (Open System Interconnect) darzustellen:

PS: Das Formular stammt aus Online-Informationen

Was ist ein CA-Zertifikat?

CA (Certificate Authority) ist eine externe Behörde, die für die Verwaltung und Ausstellung von Zertifikaten verantwortlich ist. Sie genießt das Vertrauen und die Anerkennung aller Branchen und der Öffentlichkeit.

CA-Zertifikat ist ein von einer Zertifizierungsstelle ausgestelltes Zertifikat, das verwendet werden kann, um zu überprüfen, ob eine Website vertrauenswürdig ist (für HTTPS), um zu überprüfen, ob eine Datei vertrauenswürdig ist (ob sie manipuliert wurde) usw. Ein Zertifikat kann auch zum Nachweis der Authentizität und Vertrauenswürdigkeit eines anderen Zertifikats verwendet werden. Das Zertifikat der obersten Ebene wird als Stammzertifikat bezeichnet. Mit Ausnahme des Stammzertifikats (das sich als zuverlässig erweist) müssen sich andere Zertifikate auf das übergeordnete Zertifikat verlassen, um sich zu beweisen.

HTTP-Drei-Wege-Handshake

Das Hypertext-Übertragungsprotokoll HTTP (HyperText Transfer Protocol) wird am häufigsten verwendet das Internet Ein Netzwerkprotokoll. Da die Informationen im Klartext übermittelt werden, gelten sie als unsicher. Der Drei-Wege-Handshake von HTTP verwendet tatsächlich den Drei-Wege-TCP-Handshake, um den Aufbau einer HTTP-Verbindung zu bestätigen.

Wie in der Abbildung unten gezeigt, ist SYN (synchron) das Handshake-Signal, die Sequenznummer und die Bestätigungsnummer, die verwendet werden, wenn TCP/IP eine Verbindung herstellt. Die drei darauf zeigenden Pfeile stellen einen Drei-Wege-Handshake dar. Nach Abschluss des Drei-Wege-Handshakes beginnen Client und Server mit der Datenübertragung.

PS: Das Bild stammt aus Online-Informationen

Erster Handshake: Der Client sendet ein Syn-Paket (syn=j) an den Server und gibt das SYN_SEND ein Zustand. Warten auf die Bestätigung durch den Server;

Zweiter Handshake: Der Server empfängt das Syn-Paket und muss das SYN des Clients bestätigen (ack=j+1), gleichzeitig sendet er auch ein SYN-Paket (syn=k), das heißt, SYN+ACK-Paket, zu diesem Zeitpunkt wechselt der Server in den SYN_RECV-Status

Der dritte Handshake: Der Client empfängt das SYN+ACK-Paket vom Server und sendet ein Bestätigungspaket ACK (ack=k+1) an den Server, nachdem das Paket gesendet wurde. Der Client und der Server treten in den ESTABLISHED-Status ein und schließen den Drei-Wege-Handshake ab.

HTTPS-Handshake-Prozess

HTTPS fügt das SSL-Protokoll basierend auf HTTP hinzu, und SSL verlässt sich auf Zertifikate, um das zu überprüfen Serveridentität und verschlüsseln Sie die Kommunikation zwischen Browser und Server. In der folgenden Abbildung wird insbesondere gezeigt, wie die Verschlüsselung, Entschlüsselung und Überprüfung durchgeführt wird. Das Folgende wird als Handshake bezeichnet. Was ist der HTTP- vs. HTTPS-Handshake?

PS: Die folgende Beschreibung des Bildes stammt von: http://zhuqil.cnblogs.com

1. Client initiiert HTTPS-Anfrage

2. Serverkonfiguration

Ein Server, der das HTTPS-Protokoll verwendet, muss über ein Set verfügen Anzahl digitaler Zertifikate Sie können es selbst erstellen oder ein CA-Zertifikat verwenden. Der Unterschied besteht darin, dass das von Ihnen ausgestellte Zertifikat vom Client überprüft werden muss, bevor Sie weiterhin darauf zugreifen können. Bei Verwendung des CA-Zertifikats wird jedoch keine Eingabeaufforderungsseite angezeigt. Bei diesem Zertifikatssatz handelt es sich eigentlich um ein Paar öffentlicher und privater Schlüssel. Der öffentliche Schlüssel wird von anderen zur Verschlüsselung verwendet und der private Schlüssel wird von Ihnen selbst zur Entschlüsselung verwendet.

3. Übertragen Sie das Zertifikat

Dieses Zertifikat ist eigentlich ein öffentlicher Schlüssel, der jedoch viele Informationen enthält, beispielsweise die ausstellende Behörde des Zertifikats, Ablaufzeit usw. .

4. Der Client analysiert das Zertifikat

Dieser Teil der Arbeit wird vom TLS des Clients erledigt. Es wird zunächst überprüft, ob die Öffentlichkeit Der Schlüssel ist gültig, beispielsweise die ausstellende Behörde, die Ablaufzeit usw. Wenn eine Anomalie festgestellt wird, wird ein Warnfeld angezeigt, das darauf hinweist, dass ein Problem mit dem Zertifikat vorliegt. Liegt kein Problem mit dem Zertifikat vor, wird ein Zufallswert generiert und dieser Zufallswert anschließend mit dem Zertifikat verschlüsselt.

5. Verschlüsselte Informationen übertragen

Dieser Teil überträgt einen mit einem Zertifikat verschlüsselten Zufallswert. Der Zweck besteht darin, dass der Server diesen Zufallswert erhält Wertwert, zukünftige Kommunikation zwischen dem Client und dem Server kann über diesen Zufallswert verschlüsselt und entschlüsselt werden.

6. Informationen zur Entschlüsselung des Dienstsegments

Nachdem der Server ihn mit dem privaten Schlüssel entschlüsselt hat, erhält er den vom Client übergebenen Zufallswert (privaten Schlüssel) und verschlüsselt den Inhalt dann symmetrisch mit diesem Wert. Bei der sogenannten symmetrischen Verschlüsselung werden Informationen und private Schlüssel durch einen bestimmten Algorithmus gemischt, sodass der Inhalt nicht abgerufen werden kann und der Client und der Server den privaten Schlüssel kennen, solange der private Schlüssel nicht bekannt ist Der Verschlüsselungsalgorithmus ist stark genug, der private Schlüssel ist komplex genug und die Daten sind sicher genug.

7. Übermittlung verschlüsselter Informationen

Dieser Teil der Informationen sind die durch den privaten Schlüssel im Dienstsegment verschlüsselten Informationen, die sein können Wird auf die Client-Reduktion angewendet.

8. Der Client entschlüsselt die Informationen

Der Client verwendet den zuvor generierten privaten Schlüssel, um die vom Dienstsegment übergebenen Informationen zu entschlüsseln Dann erhält die Entschlüsselung den folgenden Inhalt.

PS: Auch wenn der Dritte die Daten während des gesamten Handshake-Prozesses überwacht, kann man nichts dagegen tun.

Zusammenfassung

Warum ist HTTPS sicher?

Wenn im vierten Schritt des HTTPS-Handshakes das Zertifikat der Website nicht vertrauenswürdig ist, wird die folgende Bestätigungsoberfläche angezeigt, um die Authentizität der Website zu bestätigen. Darüber hinaus wird in den Schritten sechs und acht der private Schlüssel des Clients zum Ver- und Entschlüsseln verwendet, um die Sicherheit der Datenübertragung zu gewährleisten.

Der Unterschied zwischen HTTPS und HTTP

1 Das https-Protokoll erfordert die Beantragung eines Zertifikats von ca oder ein selbst erstelltes Zertifikat erstellen.

2. HTTP-Informationen werden im Klartext übertragen, während https eine sichere SSL-Verschlüsselung verwendet.

3. HTTP überträgt Daten direkt mit TCP, während HTTP eine SSL-Schicht (OSI-Präsentationsschicht) durchläuft und unterschiedliche Ports verwendet. Ersteres ist 80 (erfordert inländische Archivierung) und letzteres ist 443.

4. Die HTTP-Verbindung ist sehr einfach und zustandslos; das HTTPS-Protokoll ist ein Netzwerkprotokoll, das auf dem SSL+HTTP-Protokoll basiert und eine verschlüsselte Übertragung und Identitätsauthentifizierung durchführen kann und sicherer als das HTTP-Protokoll ist.

Beachten Sie, dass die https-Verschlüsselung auf der Transportschicht abgeschlossen ist

https-Pakete werden verschlüsselt, wenn sie in TCP-Pakete verpackt werden, unabhängig davon, ob Header-Feld und das Body-Feld von https werden verschlüsselt.

Bei Verwendung von tcpdump oder wireshark und anderen TCP-Layer-Tools zum Erfassen von Paketen wird der verschlüsselte Inhalt erhalten, während dies bei der Anwendungsschicht der Fall ist Wird zum Erfassen von Paketen verwendet. Verwenden Sie das Paketerfassungstool Charels (Mac), Fildder (Windows). Dann wird es natürlich im Klartext angezeigt.

PS: HTTPS selbst dient der Sicherheit der Netzwerkübertragung.

Beispiel: Verwenden Sie Wireshark, um Pakete zu erfassen:

http. Sie können sehen, dass die Erfassung im Klartext erfolgt:

https, Sie können im Chiffretext gefangen sehen:

Anhang

Die Verschlüsselungs- und HASH-Algorithmen, die im Allgemeinen von HTTPS verwendet werden sind wie folgt:

Asymmetrischer Verschlüsselungsalgorithmus: RSA, DSA/DSS

Symmetrischer Verschlüsselungsalgorithmus: AES, RC4, 3DES

HASH-Algorithmus: MD5, SHA1, SHA256

Das obige ist der detaillierte Inhalt vonWas ist der HTTP- vs. HTTPS-Handshake?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn