Ik raak in de war met de termen op dit gebied. Wat is SSL, TLS, en HTTPS? Wat zijn de verschillen tussen beide?
TLS is de nieuwe naam voor SSL. Het SSL-protocol is namelijk op versie 3.0 gekomen; TLS 1.0 is "SSL 3.1". TLS-versies die momenteel zijn gedefinieerd zijn TLS 1.1 en 1.2. Elke nieuwe versie voegt een paar functies toe en wijzigt enkele interne details. We zeggen soms "SSL/TLS".
HTTPS is HTTP-met-SSL/TLS. SSL (TLS) creëert een beveiligde, bidirectionele tunnel voor willekeurige binaire gegevens tussen twee hosts. HTTP is een protocol voor het verzenden van verzoeken en het ontvangen van antwoorden, waarbij elk verzoek en antwoord bestaat uit gedetailleerde headers en (mogelijk) enige inhoud. HTTP is bedoeld om over een bidirectionele tunnel voor willekeurige binaire gegevens te lopen; wanneer die tunnel een SSL/TLS-verbinding is, wordt het geheel "HTTPS" genoemd.
Om de acroniemen uit te leggen:
SSL en TLS zijn protocollen die tot doel hebben privacy en gegevensintegriteit tussen twee partijen te verschaffen (zie RFC 2246), ontworpen om over een betrouwbaar communicatieprotocol (typisch TCP) te lopen. Hoewel de TLS specificatie het niet over sockets heeft, is SSL/TLS zo ontworpen dat toepassingen ze bijna net zo kunnen gebruiken als traditionele TCP sockets, bijvoorbeeld SSLSocket
in Java breidt Socket
uit (er zijn echter kleine verschillen in termen van bruikbaarheid).
HTTPS is HTTP over SSL/TLS, waarbij de SSL/TLS verbinding eerst tot stand wordt gebracht, en dan normale HTTP gegevens worden uitgewisseld over deze SSL/TLS verbinding.
Of je hiervoor SSL of TLS gebruikt, hangt af van de configuratie van je browser en van de server (meestal is er een optie om SSLv2, SSLv3 of TLS 1.x toe te staan).
De details over hoe HTTP en SSL/TLS HTTPS vormen staan in RFC 2818.
Wat betreft het verschil tussen SSL en TLS, ben je misschien geïnteresseerd in deze twee antwoorden die ik schreef voor gelijksoortige vragen op StackOverflow en ServerFault:
Je zou TLSv1.0 kunnen beschouwen als SSLv3.1 (in feite is dat's wat er gebeurt binnen de uitgewisselde records). Het's gewoon makkelijker om de TLSv1.0 te vergelijken met TLSv1.1 en TLSv1.2 omdat ze'allemaal binnen de IETF zijn bewerkt en min of meer dezelfde structuur volgen. SSLv3 wordt uitgegeven door een andere instelling (Netscape), maakt het een beetje moeilijker om om de verschillen te zien.
Hier zijn een paar verschillen, maar ik betwijfel of ik ze allemaal kan opnoemen:
- In het ClientHello bericht (eerste bericht verzonden door de client, om de handshake te starten), de versie is {3,0} voor SSLv3, {3,1} voor TLSv1.0 en {3,2} voor TLSv1.1.
- De ClientKeyExchange verschilt.
- De MAC/HMAC verschilt (TLS gebruikt HMAC terwijl SSL een vroegere versie van HMAC gebruikt).
- De key derivation verschilt.
- De client kan toepassingsgegevens verzenden direct na het verzenden van het SSL/TLS Finished-bericht in SSLv3. In TLSv1, moet het wachten op het Finished-bericht van de server's.
- De lijst van cipher suites verschilt (en sommige van hen zijn hernoemd van SSL* naar TLS*, met behoud van hetzelfde id-nummer).
- Er zijn ook verschillen met betrekking tot de nieuwe re-negotiation uitbreiding. Over het algemeen geldt dat hoe hoger de versie of SSL/TLS, hoe veiliger het is, op voorwaarde dat u uw cipher suites ook juist kiest (hogere versies van TLS bieden ook het gebruik van cipher suites die als beter worden beschouwd). (SSLv2 wordt als onveilig beschouwd.) Bovendien valt SSL niet onder de reikwijdte van de IETF. Bijvoorbeeld, de TLS renegotiation fix moest achteraf worden aangepast voor SSLv3 (hoewel SSL/TLS stacks toch moesten worden bijgewerkt). Misschien bent u ook geïnteresseerd in dit antwoord:
STARTTLS
in LDAP/SMTP). Dit is beschreven in RFC 2817. Voor zover ik weet, wordt dit bijna nooit gebruikt (en het is niet wat's gebruikt door https://
in browsers). Het belangrijkste relevante deel van deze RFC is het gedeelte over CONNECT
voor HTTP proxy servers (dit wordt gebruikt door HTTP proxy servers om HTTPS verbindingen door te geven).De termen SSL en TLS worden vaak door elkaar of in combinatie met elkaar gebruikt (TLS/SSL), maar de ene is in feite de voorganger van de andere - SSL 3.0 diende als basis voor TLS 1.0, die daarom soms SSL 3.1 wordt genoemd.
In termen van veiligheid zijn ze beide even veilig
Het belangrijkste verschil is dat, terwijl SSL-verbindingen beginnen met beveiliging en direct overgaan tot beveiligde communicatie, TLS-verbindingen eerst beginnen met een onveilige "hello" naar de server en pas overgaan tot beveiligde communicatie nadat de handshake tussen de client en de server is geslaagd. Als de TLS-handshake om welke reden dan ook mislukt, wordt de verbinding nooit tot stand gebracht.
HTTP protocol wordt gebruikt om gegevens op te vragen en te ontvangen en https waarin de 's' niets anders is dan veilige SSL die de http protocol aanvraag en ontvangst activiteit versleuteld maakt zodat geen midden man aanvaller de gegevens gemakkelijk kan verkrijgen.
dan is uw verbinding met de webserver onversleuteld en worden alle gegevens in onversleutelde vorm verzonden, zodat een middenaanvaller deze gegevens kan verkrijgen en bekijken.
Wel, beide zijn hetzelfde maar TLS is meer uitbreidbaar en hoopt meer ondersteuning te krijgen in de toekomst en TLS is achterwaarts compatibel.