Wat is het verschil tussen SSL, TLS, en HTTPS?

Ik raak in de war met de termen op dit gebied. Wat is SSL, TLS, en HTTPS? Wat zijn de verschillen tussen beide?

Oplossing

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" betekent "Secure Sockets Layer". Dit werd bedacht door de uitvinders van de eerste versies van het protocol, Netscape (het bedrijf werd later opgekocht door AOL).
  • "TLS" betekent "Transport Layer Security". De naam werd veranderd om juridische problemen met Netscape te vermijden, zodat het protocol "open en vrij" kon zijn (en gepubliceerd als een RFC). Het zinspeelt ook op het idee dat het protocol werkt over elke bidirectionele stroom van bytes, niet alleen over Internet-gebaseerde sockets.
  • "HTTPS" wordt verondersteld te betekenen "HyperText Transfer Protocol Secure", wat grammaticaal niet in de haak is. Niemand, behalve de verveelde pedant, gebruikt ooit de vertaling; "HTTPS" is beter te beschouwen als "HTTP met een S die SSL betekent". Andere protocol acroniemen zijn op dezelfde manier opgebouwd, b.v. SMTPS, IMAPS, FTPS... allemaal een kaal protocol dat "beveiligd" werd door het binnen SSL/TLS te laten lopen.
Commentaren (8)

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:

  • Verschil tussen SSL & TLS [Stackoverflow]
  • [Wat zijn de exacte verschillen op protocolniveau tussen SSL en TLS? 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:
  • Wat gebeurt er op de draad wanneer een TLS / LDAP of TLS / HTTP verbinding wordt opgezet?[Stackoverflow] Merk op dat sommige mensen SSL en TLS tegenover elkaar stellen als het verschil tussen "SSL/TLS bij verbinding" en "upgrade naar TLS" (na enig gesprek met behulp van het toepassingsprotocol). Ondanks het feit dat sommige van deze antwoorden relatief veel upvoted zijn, is dit onjuist. Deze fout wordt gepropageerd door het feit dat bepaalde toepassingen, zoals Microsoft Outlook, twee configuratie opties aanbieden genaamd "SSL" en "TLS" voor SMTP/IMAP configuratie terwijl ze eigenlijk bedoelen "SSL/TLS bij verbinding" en "upgrade naar TLS". (Hetzelfde geldt voor de JavaMail bibliotheek, denk ik). De RFC's die het over STARTTLS hebben zijn geschreven toen TLS al een officiële RFC was, daarom'hebben ze het alleen over het upgraden van de verbinding naar TLS. In de praktijk, als je de configuratie van je mail client tweakt om het te dwingen SSLv3 te gebruiken in plaats van TLS (niet iets wat ik in het algemeen zou aanraden), is het's nog steeds waarschijnlijk dat je kunt upgraden naar SSL/TLS met behulp van STARTTLS met een SSLv3 verbinding, simpelweg omdat het's meer over de modus van de werking gaat dan de versie van SSL/TLS en/of de cipher suites. Er is ook een variant van HTTP waarbij de upgrade naar SSL/TLS binnen het HTTP-protocol wordt gedaan (vergelijkbaar met 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).
Commentaren (4)

SSL VS TLS

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.

Wat is veiliger SSL of TLS

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.

(SSL en TLS vs HTTP)

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.

Als noch SSL noch TLS wordt gebruikt met HTTP

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.

dus moet u SSL of TLS gebruiken

Wel, beide zijn hetzelfde maar TLS is meer uitbreidbaar en hoopt meer ondersteuning te krijgen in de toekomst en TLS is achterwaarts compatibel.

Commentaren (3)