W dniu dzisiejszym przyjrzymy się jednemu z podstawowych protokołów internetowych jest nim SSL/TLS. Został stworzony do bezpieczniej komunikacji przeglądarki z serwerem webowym. Został stworzony w 1994 roku rzez firmę Netscape, początkowo nie był dostępny publicznie, stało się to wraz z wersją 2. Szyfrowanie opiera się na metodzie asynchronicznej oraz kluczach X.509. Protokoły SSL, posiadały wiele luk w zabezpieczeniach, zmieniło się to wraz z protokołem TLS, wydanym w roku 1999, przez specjalnie powołaną grupę IETF. Kolejne wersje (TLS 1.1 i TLS 1.2) ukazały się odpowiednio w larach 2006 i 2008.
Protokół ten może być wykorzystywany nie tylko w protokole HTTP, ale i innych, ponieważ działa on w sposób przezroczysty, czyli jest niewidoczny dla innych protokołów, z podu znajdowania się go w wysokiej warstwie modelu ISO/OSI, inicjalizacja warstwa aplikacji, działanie warstwa prezentacji.
Nawiązywanie połączenia w TLS jest realizowany przez handshake (protokół uzgadniania), w najnowszej wersji (TLS 1.2), odbywa się to następująco.
- Request Hello – serwer może wysłać żądanie, rozpoczynające całą negocjację od nowa. Klient powinien wysłać komunikat Client Hello. Jeśli negocjacja już trwa to żądanie jest ignorowane.
- Client Hello – Wysyłane do serwera żądanie chęci zawiązania bezpiecznego połączenia. Przesyłane są następujące parametry: obsługiwaną wersję protokołu SSL, dozwolone sposoby szyfrowania i kompresji danych, identyfikator sesji, czas systemowy oraz 28- bajtowa losowo generowana liczba do generowania kluczy.
- Server Hello – Serwer odpowiada podobnym żądaniem, w własnym ciągiem losowym.
- Hello Extensions – Ustalane są dodatkowe parametry połączenia, ustalany jest między innymi algorytm podpisu elektronicznego.
- Server Certificate – serwer podpisuje swój certyfikat klientowi. W przypadku niektórych algorytmów ustalane są dane do parametru pre-master-secret.
- Server Key Exchange Message – jeśli nie zostały wcześniej ustalone, tworzone są dane potrzebne do wygenerowania pre-master-secret. Ten krok istnieje tylko w algorytmach DHE-DSS, DHE-RSA, DH-anon.
- Certificate Request– Klient może wysłać żądanie certyfikatu klienta, zależnie od metody szyfrowania.
- Server Hello Done– komunikat kończy etap Serwer Hello, serwer czeka na przesłanie certyfikatu klienta.
- Client Certificate – Klient wysyła swój certyfikat do serwera, jeśli go nie posiada, połączenie może być przerwane, zależnie od konfiguracji serwera.
- Client Key Exchange Message – jest to odpowiedź na ostanie żądanie klienta, w tej chwili jest ostatecznie ustalany pre-master-secret.
- Certificate Verify – Bezpośrednio po poprzednim żądaniu następuje weryfikacja certyfikatu.
- Finish – Wszystkie operacje się powiodły następuje nawiązanie szyfrowanego połączenia.
Aby móc się posługiwać certyfikatem SSL/TLS, musimy go pobrać z odpowiedniego centrum certyfikacji (Certum, Rapid SSL, Positivessl) lub zakupić bezpośrednio w naszej firmie hostingowej. Ceny wahają się od 100zł do 1500zł, zależnie od wersji certyfikatu.
Wygenerowany certyfikat znajduje się pomiędzy linijkami, —– BEGIN NEW VERTIFICATE REQUEST —–, a —– END NEW CERTIFICATE REQUEST —–, w Polu klucze podajemy wymagane dane, akceptujemy oświadczenie i klikamy Aktywuj.
Ostatnim krokiem jest potwierdzenie dostępu do domeny, możemy tego dokonać na kilka sposobów.
- Klikając na łącze przesyłane na adres w domenie,
- umieszczając na stronie plik html, podany przez centrum certyfikacji,
- umieszczając odpowiednią linijkę w sekcji <meta name>,
- tworząc w zasobach DNS odpowiedni rekord TXT.
Po potwierdzeniu własności domeny, dostajemy nasz certyfikat na e-maila, następnie dodajemy certyfikat na naszym serwerze webowym, konfiguracja jest zależna od typu serwera.
Po poprawnym uruchomieniu certyfikatu serwer będzie gotowy do bezpiecznego połączenia TLS.
Sprawdzanie certyfikatu
Jeśli połączenie jest szyfrowane przy adresie strony powinna pojawić się kłódeczka (wygląd zależny jest od przeglądarki). Gdy chcemy dowiedzieć się szczegółów na temat certyfikatu klikamy na nią, a następnie na przycisk pokaż informacje o certyfikacie.
Możemy teraz sprawdzić na jaką domenę został wydany certyfikat, jakie centrum certyfikacji wystawiło certyfikat, czas jego ważności itp.