Hvis du nogensinde har surfet på en HTTPS-URL via en browser, har du oplevet SSL-handshake. Selv om du måske ikke bemærker det, opretter browseren og webstedet en HTTPS-forbindelse ved hjælp af envejs SSL-håndshake.
Det vigtigste formål med et SSL-håndshake er at sikre privatlivets fred og dataintegritet for kommunikation mellem en server og en klient. Under håndslaget udveksler server og klient vigtige oplysninger, der er nødvendige for at etablere en sikker forbindelse.
Der findes to typer SSL-håndslag, der beskrives som envejs SSL og tovejs SSL (Mutual SSL). Forskellen mellem de to er, at i envejs-SSL er det kun klienten, der validerer serverens identitet, mens det i tovejs-SSL er både server og klient, der validerer hinandens identitet. Når vi surfer på et HTTPS-websted, anvendes der normalt envejs-SSL, hvor kun vores browser (klient) validerer webstedets (serverens) identitet. Tovejs-SSL bruges mest i server til server-kommunikation, hvor begge parter skal validere hinandens identitet.
Ved et SSL-håndshake følger serveren og klienten nedenstående trin.
1. Client Hello
Klienten sender de oplysninger, som serveren skal bruge for at starte en HTTPS-forbindelse.
I ovenstående log kan vi se, at klienten hello med TLS v1.2. Hermed meddeler klienten serveren, at den har understøttelse af TLS-versioner 1.2 og lavere. Listen over ciphers, der understøttes af klienten, kan også ses af ovenstående log. Ud fra denne liste vil serveren vælge en cipher suite, som den understøtter. Hvis listen indeholder cipher suites, som serveren ikke genkender, understøtter eller ønsker at bruge, vil serveren ignorere disse ciphers. Hvis der ikke findes nogen understøttede cipher suites, sender serveren en fejlmeddelelse og lukker forbindelsen.
2. Server Hello
Serveren svarer tilbage med den konfiguration, den har valgt fra Client Hello, sammen med sine oplysninger for at fortsætte med håndslaget. Server Hello vil være som følger: