Mi confondo con i termini in quest'area. Che cos'è SSL, TLS e HTTPS? Quali sono le differenze tra loro?
TLS è il nuovo nome per SSL. Vale a dire, il protocollo SSL ha ottenuto la versione 3.0; TLS 1.0 è "SSL 3.1". Le versioni TLS attualmente definite includono TLS 1.1 e 1.2. Ogni nuova versione aggiunge alcune funzionalità e modifica alcuni dettagli interni. A volte diciamo "SSL / TLS".
HTTPS è HTTP-within-SSL / TLS. SSL (TLS) stabilisce un tunnel bidirezionale protetto per dati binari arbitrari tra due host. HTTP è un protocollo per l'invio di richieste e la ricezione di risposte, ogni richiesta e risposta costituita da intestazioni dettagliate e (eventualmente) alcuni contenuti. HTTP è pensato per funzionare su un tunnel bidirezionale per dati binari arbitrari; quando quel tunnel è una connessione SSL / TLS, allora l'intero è chiamato "HTTPS".
Per spiegare gli acronimi:
SSL e TLS sono protocolli che mirano a garantire la privacy e l'integrità dei dati tra due parti (vedere RFC 2246 ), progettato per eseguire un protocollo di comunicazione affidabile (in genere TCP). Sebbene la specifica TLS non parli di socket, il design di SSL / TLS è stato fatto in modo che le applicazioni potessero usarli quasi come i socket TCP tradizionali, ad esempio SSLSocket
in Java estende Socket
(ci sono piccole differenze in termini di usabilità, però).
HTTPS è HTTP su SSL / TLS, in cui la connessione SSL / TLS viene stabilita per prima e quindi i normali dati HTTP vengono scambiati tramite questa connessione SSL / TLS. L'utilizzo di SSL o TLS dipende dalla configurazione del browser e del server (solitamente è disponibile un'opzione per consentire SSLv2, SSLv3 o TLS 1.x). I dettagli di come HTTP e SSL / TLS formano HTTPS sono in RFC 2818 .
Per quanto riguarda la differenza tra SSL e TLS, potresti essere interessato a queste due risposte che ho scritto per queste domande simili su StackOverflow e ServerFault:
You could consider TLSv1.0 as SSLv3.1 (in fact that's what happens within the records exchanged). It's just easier to compare the TLSv1.0 with TLSv1.1 and TLSv1.2 because they've all been edited within IETF and follow more or less the same structure. SSLv3 being edited by a different institution (Netscape), it makes it a bit more difficult so spot the differences.
Here are a few differences, but I doubt I can list them all:
- In the ClientHello message (first message sent by the client, to initiate the handshake), the version is {3,0} for SSLv3, {3,1} for TLSv1.0 and {3,2} for TLSv1.1.
- The ClientKeyExchange differs.
- The MAC/HMAC differs (TLS uses HMAC whereas SSL uses an earlier version of HMAC).
- The key derivation differs.
- The client can send application data can be sent straight after sending the SSL/TLS Finished message in SSLv3. In TLSv1, it must wait for the server's Finished message.
- The list of cipher suites differ (and some of them have been renamed from SSL_* to TLS_*, keeping the same id number).
- There are also differences regarding the new re-negotiation extension.
Generalmente, maggiore è la versione o SSL / TLS, maggiore è la sicurezza, purché tu scelga correttamente anche le tue suite di cifratura (le versioni più avanzate di TLS offrono anche l'uso di pacchetti di crittografia considerati migliori). (SSLv2 è considerato non sicuro). Inoltre, SSL non rientra nell'ambito IETF. Ad esempio, la correzione della rinegoziazione TLS doveva essere adattata per SSLv3 (anche se gli stack SSL / TLS dovevano essere aggiornato comunque).
Potresti anche essere interessato a questa risposta:
Si noti che alcune persone si oppongono a SSL e TLS come la differenza tra "SSL / TLS su connessione" e "upgrade a TLS" (dopo alcune conversazioni usando il protocollo dell'applicazione). Nonostante alcune di queste risposte siano relativamente a bassa rotazione , questo non è corretto Questo errore è propagato dal fatto che alcune applicazioni, come Microsoft Outlook, offrono due opzioni di configurazione denominate "SSL" e "TLS" per la configurazione SMTP / IMAP quando significano realmente "SSL / TLS su connessione" e "upgrade a TLS". (Lo stesso vale per la libreria JavaMail, credo.)
Le RFC che parlano di STARTTLS sono state scritte quando TLS era già una RFC ufficiale, motivo per cui parlano solo dell'aggiornamento della connessione a TLS. In pratica, se modifichi la configurazione del tuo client di posta elettronica per costringerlo a utilizzare SSLv3 invece di TLS (non qualcosa che generalmente raccomando), è comunque probabile che sia in grado di eseguire l'aggiornamento a SSL / TLS utilizzando STARTTLS con una connessione SSLv3, semplicemente perché si tratta più della modalità operativa rispetto alla versione di SSL / TLS e / o delle suite di crittografia.
Esiste anche una variante di HTTP in cui l'aggiornamento a SSL / TLS viene eseguito all'interno del protocollo HTTP (simile a STARTTLS
in LDAP / SMTP). Questo è descritto in RFC 2817 . Per quanto ne so, questo non è quasi mai usato (e non è quello che viene usato da https://
nei browser). La parte principale rilevante di questo RFC è la sezione relativa a CONNECT
per i server proxy HTTP (utilizzata dai server proxy HTTP per inoltrare le connessioni HTTPS).
I termini SSL e TLS sono spesso usati in modo intercambiabile o in combinazione tra loro (TLS / SSL), ma uno è in effetti il predecessore dell'altro - SSL 3.0 è servito come base per TLS 1.0 che, di conseguenza, viene talvolta definito SSL 3.1.
In termini di sicurezza, entrambi sono considerati ugualmente sicuri
La differenza principale è che, mentre le connessioni SSL iniziano con la sicurezza e passano direttamente alle comunicazioni protette, le connessioni TLS iniziano con un insicuro "ciao" al server e passano alle comunicazioni protette solo dopo l'handshake tra il client e il server ha successo Se l'handshake TLS fallisce per qualsiasi motivo, la connessione non viene mai creata.
Il protocollo HTTP è usato per richiedere e ricevere i dati e https in cui il 's' non è altro che SSL sicuro che rende crittografato il protocollo http e l'attività di ricezione in modo che nessun utente malintenzionato possa ottenere facilmente i dati.
quindi la tua connessione con il server web non è criptata, tutti i dati saranno inviati in chiaro, qualsiasi persona malintenzionata possa ottenere e visualizzare quei dati.
bene, entrambi sono uguali ma TLS è più estensibile e speriamo di ottenere più supporto in futuro e TLS è compatibile con le versioni precedenti.
Leggi altre domande sui tag cryptography tls protocols