1. Stretta di mano
Tutto inizia prima con una stretta di mano. Il client comunica al server quale versione di SSL supporta e quali suite di crittografia. Il server risponde con le informazioni su quale versione di SSL e quale suite di crittografia verranno utilizzate.
2. Cerfiticate
Il client ora deve controllare se il server è veramente chi sa di essere. Questo è fatto con il certificato. Il client verifica il nome del titolare, il dominio, la chiave pubblica, la firma e la data in cui scadrà. Il controllo di queste informazioni viene effettuato chiedendo alle autorità di certificazione se è valido o meno.
3. Scambio chiave
Ora che tutto è quasi impostato, il client genera una chiave simmetrica casuale che verrà utilizzata per crittografare i dati inviati avanti e indietro tra il client e il server. (nota: entrambi i modi sono criptati!) Il client quindi crittografa questa chiave simmetrica con la chiave pubblica asimmetrica del server e invia queste informazioni al server. Solo il server può leggere questi dati, perché può essere decifrato solo usando la sua chiave privata. Così ora entrambe le parti hanno la chiave simmetrica che verrà utilizzata per crittografare e decrittografare i dati della comunicazione.
Il motivo per cui esiste una chiave simmetrica dipende dalle prestazioni. Usare solo la chiave pubblica asimmetrica del server sarebbe molto più lento ed è anche vincolato alla limitazione della dimensione dei dati. E come hai sottolineato, altrimenti il server non può inviare dati crittografati al client.
Spero che questo ti fornisca una breve comprensione del funzionamento di SSL.