Mi confondo con i termini in questo settore. Cosa sono SSL, TLS e HTTPS? Quali sono le differenze tra loro?
TLS è il nuovo nome di SSL. Cioè, il protocollo SSL è arrivato alla 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 caratteristiche e modifica alcuni dettagli interni. A volte diciamo "SSL/TLS".
HTTPS è HTTP-in-SSL/TLS. SSL (TLS) stabilisce un tunnel sicuro e bidirezionale per dati binari arbitrari tra due host. HTTP è un protocollo per inviare richieste e ricevere risposte, ogni richiesta e risposta consiste in intestazioni dettagliate e (eventualmente) alcuni contenuti. HTTP è pensato per funzionare su un tunnel bidirezionale per dati binari arbitrari; quando questo tunnel è una connessione SSL/TLS, allora il tutto è chiamato "HTTPS".
Per spiegare gli acronimi:
SSL e TLS sono protocolli che mirano a fornire privacy e integrità dei dati tra due parti (vedi RFC 2246), progettati per funzionare su un protocollo di comunicazione affidabile (tipicamente TCP). Anche se la specifica TLS non parla di socket, la progettazione di SSL/TLS è stata fatta in modo che le applicazioni possano usarli quasi come i tradizionali socket TCP, per esempio SSLSocket
in Java estende Socket
(ci sono piccole differenze in termini di usabilità, però).
HTTPS è HTTP su SSL/TLS, dove la connessione SSL/TLS viene stabilita per prima, e poi i normali dati HTTP vengono scambiati su questa connessione SSL/TLS.
Se usi SSL o TLS per questo dipende dalla configurazione del tuo browser e del server (di solito c'è un'opzione per permettere SSLv2, SSLv3 o TLS 1.x).
I dettagli su 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 domande simili su StackOverflow e ServerFault:
Si potrebbe considerare TLSv1.0 come SSLv3.1 (infatti questo'è ciò che accade all'interno dei record scambiati). È solo più facile confrontare il TLSv1.0 con TLSv1.1 e TLSv1.2 perché sono stati tutti modificati all'interno della IETF e seguono più o meno la stessa struttura. SSLv3 essendo curato da un ente diverso (Netscape), rende un po' più difficile così individuare le differenze.
Ecco alcune differenze, ma dubito di poterle elencare tutte:
- Nel messaggio ClientHello (primo messaggio inviato dal client, per iniziare l'handshake), la versione è {3,0} per SSLv3, {3,1} per TLSv1.0 e {3,2} per TLSv1.1.
- Il ClientKeyExchange differisce.
- Il MAC/HMAC differisce (TLS usa HMAC mentre SSL usa una versione precedente di HMAC).
- L'elenco delle cipher suite è diverso (e alcune di esse sono state rinominate da SSL* a TLS*, mantenendo lo stesso numero id).
- Ci sono anche differenze per quanto riguarda la nuova estensione di rinegoziazione. In generale, più alta è la versione o SSL/TLS, più sicuro è, a condizione di scegliere bene anche le suite di cifratura (le versioni più alte di TLS offrono anche l'uso di suite di cifratura che sono considerate migliori). (SSLv2 è considerato insicuro.) Inoltre, SSL non rientra nell'ambito IETF. Per esempio, la correzione della rinegoziazione di TLS ha dovuto essere adattata per SSLv3 (anche se gli stack SSL/TLS dovevano essere aggiornati comunque). Potresti anche essere interessato a questa risposta:
- Cosa succede sul filo quando viene impostata una connessione TLS / LDAP o TLS / HTTP?[Stackoverflow] Si noti che alcune persone oppongono SSL e TLS come la differenza tra "SSL/TLS al momento della connessione" e "aggiornamento a TLS" (dopo qualche conversazione usando il protocollo dell'applicazione). Nonostante alcune di queste risposte siano relativamente molto votate, questo non è corretto. Questo errore è propagato dal fatto che alcune applicazioni, come Microsoft Outlook, offrono due opzioni di configurazione chiamate "SSL" e "TLS" per la configurazione SMTP/IMAP quando in realtà intendono "SSL/TLS alla connessione" e "upgrade to 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, ecco perché parlano solo di aggiornare la connessione a TLS. In pratica, se modificate la configurazione del vostro client di posta per forzarlo ad usare SSLv3 invece di TLS (qualcosa che non raccomanderei generalmente), è ancora probabile che sia in grado di aggiornare a SSL/TLS usando STARTTLS con una connessione SSLv3, semplicemente perché si tratta più della modalità di funzionamento che della versione di SSL/TLS e/o delle suite di cifratura. C'è anche una variante di HTTP in cui l'aggiornamento a SSL/TLS è fatto 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 dahttps://
nei browser). La parte più rilevante di questa RFC è la sezione suCONNECT
per i server proxy HTTP (questo è usato dai server proxy HTTP per inoltrare le connessioni HTTPS).
I termini SSL e TLS sono spesso usati in modo intercambiabile o insieme (TLS/SSL), ma uno è di fatto il predecessore dell'altro - SSL 3.0 è servito come base per TLS 1.0 che, di conseguenza, è talvolta indicato come SSL 3.1.
In termini di sicurezza sono entrambi considerati ugualmente sicuri
La differenza principale è che, mentre le connessioni SSL iniziano con la sicurezza e procedono direttamente alle comunicazioni protette, le connessioni TLS iniziano prima con un "ciao" insicuro al server e passano alle comunicazioni protette solo dopo che 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 l''s' non è altro che SSL sicuro che rende la richiesta del protocollo http e riceve l'attività criptata in modo che nessun attaccante medio possa ottenere i dati facilmente.
allora la vostra connessione con il server web non è criptata tutti i dati saranno inviati in chiaro qualsiasi attaccante medio può ottenere e visualizzare tali dati.
beh, entrambi sono uguali ma TLS è più estensibile e spera di ottenere più supporto in futuro e TLS è retrocompatibile.