SSL (ang. Secure Sockets Layer) to protokół używany do nawiązywania bezpiecznych połączeń sieciowych i bezpiecznej wymiany informacji. Został opracowany przez firmę Netscape Communications. SSL ma dwa zadania:
Z założenia ma uzupełniać protokoły już istniejące, działające poniżej warstwy aplikacji (HTTP, FTP, SMTP, POP3, Telnet), a powyżej warstwy sieci i transportu.
SSL jest protokołem otwartym i rozszerzalnym, nie wymagającym konkretnego algorytmu szyfrującego. Protokół daje każdej stronie połączenia możliwość zaproponowania obsługiwanych przez siebie algorytmów szyfrujących i wybór jednego jako obowiązującego dla obu stron.
Certyfikaty cyfrowe są mechanizmem pozwalającym na identyfikację czegoś (osoby bądź serwera sieciowego). Certyfikat cyfrowy zawiera informację, która weryfikuje tożsamość użytkownika, gwarantując, że posiadacz takiego certyfikatu jest rzeczywiście tym, za kogo się podaje. Certyfikaty są przyznawane przez CA (Certificate Authorities) - niezależne źródła, upoważnione przez odpowiednie instytucje (jak np. banki, rządy, itp.). Poza informacją identyfikacyjną certyfikat cyfrowy zawiera także klucz publiczny jego posiadacza.
W pierwszej fazie nawiązywania połączenia serwer i przeglądarka wymieniają certyfikaty. Certyfikat zawiera następujące składniki:
Certyfikat CA -
Certyfikat serwera - Jest to zbiór informacji reprezentujących tożsamość danego serwera. Certyfikat serwera musi być opatrzony podpisem CA.
Certyfikat osobisty
Certyfikat atrybutu
Uścisk dłoni przebiega według następującego schematu:
Protokół SSL wspiera użycie wielu różnych algorytmów kryptograficznych
lub szyfrów, dla takich operacji jak autoryzacja serwera i klienta, transmisja
certyfikatów i ustanowienie kluczy sesyjnych.
Algorytmy używane w SSL: