Die Begriffe in diesem Bereich verwirren mich immer wieder. Was ist SSL, TLS und HTTPS? Was sind die Unterschiede zwischen ihnen?
TLS ist der neue Name für SSL. Das SSL-Protokoll hat nämlich die Version 3.0 erreicht; TLS 1.0 ist "SSL 3.1". Zu den derzeit definierten TLS-Versionen gehören TLS 1.1 und 1.2. Mit jeder neuen Version werden einige Funktionen hinzugefügt und einige interne Details geändert. Wir sagen manchmal "SSL/TLS".
HTTPS ist HTTP-im-SSL/TLS. SSL (TLS) baut einen sicheren, bidirektionalen Tunnel für beliebige Binärdaten zwischen zwei Hosts auf. HTTP ist ein Protokoll zum Senden von Anfragen und Empfangen von Antworten, wobei jede Anfrage und Antwort aus detaillierten Kopfzeilen und (möglicherweise) einigen Inhalten besteht. HTTP ist dafür gedacht, über einen bidirektionalen Tunnel für beliebige binäre Daten zu laufen; wenn dieser Tunnel eine SSL/TLS-Verbindung ist, wird das Ganze als "HTTPS" bezeichnet.
Um die Akronyme zu erklären:
SSL und TLS sind Protokolle, die den Schutz der Privatsphäre und die Datenintegrität zwischen zwei Parteien gewährleisten sollen (siehe RFC 2246) und für den Einsatz über ein zuverlässiges Kommunikationsprotokoll (in der Regel TCP) konzipiert sind. Obwohl in der TLS-Spezifikation nicht von Sockets die Rede ist, wurden SSL/TLS so konzipiert, dass Anwendungen sie fast wie herkömmliche TCP-Sockets verwenden können, z. B. erweitert SSLSocket
in Java Socket
(es gibt allerdings kleine Unterschiede in Bezug auf die Benutzerfreundlichkeit).
HTTPS ist HTTP über SSL/TLS, wobei zuerst die SSL/TLS-Verbindung aufgebaut wird und dann normale HTTP-Daten über diese SSL/TLS-Verbindung ausgetauscht werden.
Ob Sie dabei SSL oder TLS verwenden, hängt von der Konfiguration Ihres Browsers und des Servers ab (in der Regel gibt es eine Option, die SSLv2, SSLv3 oder TLS 1.x zulässt).
Die Einzelheiten, wie HTTP und SSL/TLS HTTPS bilden, sind in RFC 2818 beschrieben.
Was den Unterschied zwischen SSL und TLS betrifft, so könnten Sie an diesen beiden Antworten interessiert sein, die ich für ähnliche Fragen auf StackOverflow und ServerFault geschrieben habe:
innerhalb der ausgetauschten Datensätze). Es ist nur einfacher, TLSv1.0 mit TLSv1.1 zu vergleichen. mit TLSv1.1 und TLSv1.2 zu vergleichen, da sie alle innerhalb der IETF bearbeitet wurden bearbeitet wurden und mehr oder weniger der gleichen Struktur folgen. SSLv3 wird von einer einer anderen Institution (Netscape) bearbeitet wird, macht es ein wenig schwieriger, so die Unterschiede zu erkennen.
Hier sind ein paar Unterschiede, aber ich bezweifle, dass ich sie alle aufzählen kann:
- In der ClientHello-Nachricht (erste Nachricht, die vom Client gesendet wird, um den Handshake einzuleiten) ist die Version {3,0} für SSLv3, {3,1} für TLSv1.0 und {3,2} für TLSv1.1.
- Der ClientKeyExchange unterscheidet sich.
- Der MAC/HMAC unterscheidet sich (TLS verwendet HMAC, während SSL eine frühere Version von HMAC verwendet).
STARTTLS
bei LDAP/SMTP). Dies wird in RFC 2817 beschrieben. Soweit ich weiß, wird dies fast nie verwendet (und es ist nicht das, was https://
in Browsern verwendet). Der wichtigste relevante Teil dieses RFC ist der Abschnitt über CONNECT
für HTTP-Proxy-Server (dies wird von HTTP-Proxy-Servern verwendet, um HTTPS-Verbindungen weiterzuleiten).Die Begriffe SSL und TLS werden oft austauschbar oder in Verbindung miteinander (TLS/SSL) verwendet, aber der eine ist tatsächlich der Vorgänger des anderen - SSL 3.0 diente als Grundlage für TLS 1.0, das daher manchmal als SSL 3.1 bezeichnet wird.
In Bezug auf die Sicherheit gelten beide als gleich sicher
Der Hauptunterschied besteht darin, dass SSL-Verbindungen mit einer sicheren Verbindung beginnen und direkt in eine gesicherte Kommunikation übergehen, während TLS-Verbindungen zunächst mit einem unsicheren "Hallo" zum Server beginnen und erst dann in eine gesicherte Kommunikation übergehen, wenn der Handshake zwischen dem Client und dem Server erfolgreich ist. Wenn der TLS-Handshake aus irgendeinem Grund fehlschlägt, wird die Verbindung nie aufgebaut.
Das HTTP-Protokoll wird verwendet, um Daten anzufordern und zu empfangen, und https, bei dem das 's' nichts anderes ist als sicheres SSL, das die HTTP-Protokollanforderung und -empfangsaktivität verschlüsselt, so dass kein mittlerer Angreifer die Daten leicht erhalten kann.
verwendet wird, ist die Verbindung mit dem Webserver unverschlüsselt und alle Daten werden im Klartext gesendet, so dass ein Angreifer diese Daten abrufen und einsehen kann.
Nun, beide sind gleich, aber TLS ist ausbaufähig und hofft, in Zukunft mehr Unterstützung zu bekommen und TLS ist rückwärtskompatibel.