SSL (Secure Sockets Layer) to wycofany już protokół kryptograficzny, który miał jedno zadanie: zaszyfrować ruch między klientem a serwerem, żeby nikt po drodze nie podsłuchał Twojego loginu ani numeru karty. Stworzył go Netscape w połowie lat 90. (SSL 2.0 w 1995, SSL 3.0 w 1996), a dziś to bezpośredni przodek TLS — protokołu, którego faktycznie używasz, nawet jeśli wszyscy dalej mówią „certyfikat SSL”.
Jak to działa i po co powstał
SSL działał między warstwą transportową (TCP) a aplikacją (np. HTTP). Najpierw odbywał się handshake: serwer przedstawiał swój certyfikat, strony uzgadniały zestaw szyfrów i wymieniały klucze. Dopiero potem leciały zaszyfrowane dane. Załatwiał trzy rzeczy naraz: poufność (szyfrowanie), integralność (że dane nie zostały zmienione po drodze) i uwierzytelnienie serwera (że gadasz z tym, z kim myślisz).
Problem w tym, że stare wersje miały dziury. SSL 3.0 padł ofiarą ataku POODLE (2014), a wcześniej SSL 2.0 był dziurawy jak sito. W efekcie RFC 7568 (2015) oficjalnie zakazał używania SSL 3.0. Następcą został TLS: 1.0 (1999), potem 1.2 (2008) i aktualne TLS 1.3 (2018).
Przykład z praktyki
Chcesz sprawdzić, czy serwer wciąż akceptuje przedpotopowe SSL? Odpalasz openssl i wymuszasz starą wersję:
openssl s_client -connect example.com:443 -ssl3
Jeśli połączenie przejdzie — masz problem do załatania w konfiguracji (np. w nginx ustaw ssl_protocols TLSv1.2 TLSv1.3;). Jeśli dostaniesz błąd handshake — i dobrze, SSL3 jest wyłączony.
Częste mity i pułapki
- „Certyfikat SSL” — marketingowy skrót. Sam certyfikat X.509 jest neutralny; protokołem, który go używa, jest dziś TLS, nie SSL.
- Kłódka w przeglądarce oznacza tylko szyfrowanie połączenia, a nie że strona jest uczciwa. Phishing też potrafi mieć ważny certyfikat.
- Włączanie starego SSL „dla kompatybilności” to proszenie się o downgrade attack. Nie rób tego.
Pojęcia powiązane: TLS, HTTPS, handshake, certyfikat X.509, urząd certyfikacji (CA), szyfrowanie symetryczne i asymetryczne, POODLE, Let’s Encrypt.