Handshake SSL
Una connessione SSL comincia con un handshake.
Quando un client (il partecipante del Gestore comunità) inizia uno scambio messaggi, vengono eseguiti questi passaggi:
-
Il client invia un messaggio di benvenuto al client in cui vengono elencate le funzioni di codifica del client (ordinate secondo l'ordine di preferenza del client),
come ad esempio la versione di SSL, il pacchetto di crittografia supportato dal client e i metodi di compressione dei dati supportati dal client. Il messaggio contiene anche un numero casuale di 28 byte.
- Il server risponde con un messaggio di benvenuto del server che contiene il metodo di codifica (pacchetto di crittografia) e il metodo di compressione di dati selezionati dal server, l'ID sessione ed un altro numero casuale.
Nota: Il client e i server devono supportare almeno un pacchetto di crittografia, o altrimenti l'handshake non riesce. Il server, in genere, sceglie il pacchetto di crittografia più comune e valido.
- Il server invia il certificato digitale.
In questo passo si verifica l'autenticazione del server.
-
Il server invia un messaggio di richiesta di un certificato digitale. Nel messaggio di richiesta di un certificato digitale, il server invia un elenco di tipi di certificato digitale supportati e i nomi distinti di autorità di certificazione accettabili.
- Il server invia un messaggio di benvenuto del server ed attende la risposta del client.
- Dopo la ricezione del messaggio di benvenuto del server, il client verifica la validità del certificato digitale del server e verifica che i parametri di benvenuti siano accettabili.
-
Se il server ha richiesto un certificato digitale del client, il client invia un certificato digitale o se non è disponibile alcun certificato digitale appropriato, il client invia un avviso "nessun certificato digitale". Questo avviso è solo un avviso, ma l'applicazione del server può compromettere la sessione, se l'autenticazione è obbligatoria.
- Il client invia un messaggio "scambio chiave del client". Questo messaggio contiene il segreto premaster, un numero casuale di 46 byte utilizzato nella generazione delle chiavi di codifica simmetriche e le chiavi MAC (Message Authentication
Code), codificate con la chiave pubblica del server.
-
Se il client ha inviato un certificato digitale al server, il client invia un messaggio "verifica certificato digitale" firmato con la chiave privata del client. Verificando la firma di questo messaggio, il server può verificare esplicitamente la proprietà del certificato digitale del client.
Nota: Un processo aggiuntivo per verificare il certificato digitale del server non è necessario. Se il server non dispone della chiave privata che appartiene al certificato digitale, non è in grado di decodificare il segreto premaster e creare le chiavi corrette per l'algoritmo di codifica simmetrico e l'handshake non riesce.
-
Il client utilizza una serie di operazioni di codifica per convertire il segreto premaster in segreto master da cui deriva tutto il materiale delle chiavi necessario per la codifica e l'autenticazione del messaggio. Il client quindi invia un messaggio "modifica spec. codifica" per far sì che il server passi al pacchetto di crittografia appena negoziato. Il messaggio successivo inviato dal client (il messaggio di chiusura) è il primo messaggio codificato con questo metodo e chiavi di codifica.
- Il server risponde con messaggi propri "modifica spec. codifica" e "terminato".
L'autenticazione del client richiede i passi 4, 7 e 9.
L'handshake SSL termina e i dati dell'applicazione codificati possono essere inviati.
