SSL certificates - what is it and what are the types

27 october 2022
Jakub Rojek Jakub Rojek
Photo by Bich Tran (https://www.pexels.com/pl-pl/zdjecie/fotografia-zblizenie-bialej-bramy-z-klodka-w-kolorze-mosiadzu-846288/)
Categories: Industry, For clients, Deployments, Administration

Jeszcze kiedyś był to bonus, oznaczający wysoki poziom zaawansowania technologicznego oraz dbałość o bezpieczeństwo użytkowników i ich danych. Obecnie to praktycznie obowiązkowy składnik każdej witryny i mało osób wyobraża sobie korzystanie, a już zwłaszcza podawanie danych, nie mówiąc o kupowaniu czegoś w Internecie przy nieobecności charakterystycznej kłódeczki koło adresu strony. Co więcej, same przeglądarki znacząco utrudniają wyświetlanie "zwykłych" stron, słusznie ostrzegając użytkownika, że coś tutaj jest nie tak i to człowiek musi przyjąć ryzyko na siebie.

Czym właściwie są certyfikaty SSL, po co je wprowadzono oraz jakie są ich rodzaje? Czy trzeba za nie płacić jak za zboże, czy można je dostać za darmo? O tym wszystkim postaramy się dzisiaj napisać i podsumować najważniejsze informacje dla zwykłych użytkowników Internetu, ale także właścicieli stron WWW, którzy jeszcze trochę gubią się w tych tematach.

Czemu służy certyfikat SSL i jak to się wiąże z HTTPS?

Z pewnością wiecie, że adresy stron internetowych mogą zaczynać się od protokołu "http", ale także "https". To "s" w drugim przypadku jest skrótem od "secure" i oznacza korzystanie z szyfrowanej, bezpiecznej drogi przeglądania sieci. Aby właściciel strony mógł udostępnić taką wersję swojej witryny, portalu czy systemu, musi nabyć oraz zainstalować coś, co nazywa się certyfikatem SSL (ang. Secure Socket Layer). W wielkim skrócie SSL to metoda (a właściwie kolejny protokół sieciowy), który przy połączeniu się z przeglądarką ustala klucze szyfrujące (służące algorytmom kryptograficznym), dzięki którym komunikacja jest bezpieczna, a użytkownik informowany o bezpieczeństwie i "tożsamości" strony. Dzieje się to najczęściej za pomocą ikony kłódki widocznej tuż przy adresie.

(Możecie też spotkać się ze skrótem TLS (ang. Transport Layer Security), które jest niczym innym, jak rozwinięciem SSL-a i często występuje w rekomendacjach audytorów cyberbezpieczeństwa, gdy sprawdzają daną witrynę (a właściwie serwer, na którym jest postawiona).)

Oczywiście, jak to zwykle bywa, cały proces jest bardziej skomplikowany - SSL służy nie tylko stronom internetowym, a monit uspokajający o bezpieczeństwie wcale nie oznacza, że korzystanie z danej witryny jest pozbawione wszystkich zagrożeń. Natomiast rozwinięcie tego tematu nie jest celem poniższego artykułu, gdyż to materiał na całe książki pisane przez osoby zajmujące się głównie cyberbezpieczeństwem. Choć ostatni wątek (czyli czy faktycznie strona jest bezpieczna) jeszcze dzisiaj poruszymy.

Ale co to w ogóle oznacza, że użytkownik korzysta z protokołu szyfrowanego i w czym pomaga uruchomienie strony pod HTTPS?

  • dane przesyłane pomiędzy komputerem użytkownika a serwerem, na którym znajduje się strona WWW, są szyfrowane co oznacza, że ich przechwycenie po drodze niewiele pomoże atakującemu - zobaczy zlepek nieczytelnych informacji, których nie można odczytać bez konkretnego, unikalnego klucza, jaki przy pierwszym połączeniu uzgodniła właśnie przeglądarka użytkownika oraz serwer. W ten sposób można przesłać wrażliwe dane i nie obawiać się, że po drodze ktoś je złapie oraz przejrzy.
  • Google zdecydowanie lepiej pozycjonuje strony z włączonym protokołem HTTPS i to już od dłuższego czasu. Można wręcz powiedzieć, że dla Google'a strony "bez kłódki" są stronami najniższego sortu.
  • z czysto ludzkiego punktu widzenia, adres, który zaczyna się od "https" jest życzliwszym okiem traktowany przez użytkowników, wśród których wiedza o tym, jak rozpoznać "bezpieczną" witrynę jest już całkiem szeroko rozpowszechniona. Z tego powodu sklep internetowy, który nie zaopatrzył się z szyfrowanie komunikacji, może mieć duże kłopoty, aby w ogóle dotrzeć do potencjalnych odbiorców, a co dopiero skłonić ich do zakupów. Zwyczajnie ludzie nie ufają stronom, które nie mają "https" w adresie.
  • użytkownik może zweryfikować naszą tożsamość i czy strona, którą przegląda, nie została podstawiona zamiast innej, właściwej. Ten punkt ma jeden dość spory haczyk i zajmiemy sie nim nieco później.

Warto wspomnieć o tym, że HTTPS jest obecnie do tego stopnia rozpowszechnione i promowane, że przeglądarki wręcz panicznie ostrzegają przed "niebezpiecznymi" stronami. Dodatkowo, serwery HTTP umożliwiają włączenie nagłówka HSTS, który ułatwia automatyczne dbanie przez przeglądarkę o to, aby HTTP samo zmieniło się na HTTPS (ale czy taka wersja będzie działać, to już zależy od stanu certyfikatu SSL). Na koniec programiści i administratorzy serwerów muszą pamiętać, że przy wersji szyfrowanej stron WWW serwery HTTP korzystają z innego portu (443) niż wersja nieszyfrowana (popularna 80-tka).

Certyfikaty SSL płatne i bezpłatne

Powstaje zatem pytanie, jak zdobyć taki certyfikat SSL. Na początku warto zdać sobie sprawę, że są to odpowiednio wygenerowane i umieszczone na serwerze pliki, które są wykorzystywane przy kontakcie użytkownika ze stroną. W tym momencie reakcje mogą być różne - od "pewnie generacja takich plików jest trudna" aż do "sam to sobie zrobię, potrzymaj mi sok jabłkowy". Krótko mówiąc - bardzo prędko dojdziemy do kwestii ceny, o czym wspominaliśmy już trochę przy okazji artykułu o żądaniach HTTP. Teraz przyszedł czas na rozwinięcie tematu.

Istnieje możliwość samodzielnej generacji certyfikatu poprzez odpowiednie, ogólnodostępne i darmowe oprogramowanie. W ten sposób jak najbardziej każda osoba ma sposobność przygotować klucze, "podpisać" je i umieścić na serwerze. Natomiast zapewne nawet laicy w tym momencie mają wątpliwości dotyczące takiego działania. Jeśli taką generację może przeprowadzić każdy człowiek, a więc również ten nieuczciwy, to wartość takiego certyfikatu jest żadna. Z tego powodu nie uświadczycie ich w sieci, a z dużym prawdopodobieństwem przeglądarki internetowe będą bić na alarm przed wejściem na taką witrynę.

Dlatego wiele osób kupuje certyfikaty SSL u zweryfikowanych dostawców (związanych z tzw. Urzędami Certyfikacji, w skrócie CA), którzy są uznani, mają odpowiednie uprawnienia oraz klauzule bezpieczeństwa. Nabywając taki produkt mamy pewność, że został on wygenerowany zgodnie z zasadami sztuki (a więc np. przy stworzeniu kluczy wykorzystano algorytm o odpowiednim stopniu losowości) oraz dostajemy na niego gwarancję, a sam certyfikat jest ważny przez określony czas (najczęściej 1 rok). Niestety, taka usługa kosztuje, choć na szczęście, nie są to wygórowane kwoty - dla większości firm zamykają się w przedziale 100-200 zł za rok. Często również sami hostingodawcy pośredniczą w tego typu usłudze, co jest o tyle zrozumiałe, że certyfikat należy wgrać na serwer i wówczas jest to w gestii administratorów.

Natomiast wiele osób słusznie zauważy, że istnieją certyfikaty zweryfikowane, ale darmowe. Owszem - taka usługa nazywa się Let's Encrypt i jest zarządzana przez organizację non-profit, powstałą przy współudziale wielu firm (w tym tych naprawdę dużych, jak Mozilla Foundation czy Cisco Systems), której przyświecał cel rozpowszechnienia certyfikatów i umożliwienia ich generacji także mniej zamożnym twórcom stron. Wywiązała się z tego znakomicie, ponieważ oficjalne dane LE podają, że z taki certyfikat jest zainstalowany na 300 milionach stron WWW. Natomiast jeśli jest coś darmowe, to zapewne ma również pewne wady i tak jest w tym przypadku, choć nie dotyczy to raczej jakości samego zabezpieczenia. Certyfikaty generowane za pośrednictwem LE są wydawane tylko i wyłacznie na konkretną domenę (DV) oraz - co dla wielu osób jest ważne - tylko na 90 dni. Po tym czasie musimy pamiętać o samodzielnym przedłużeniu, choć za pomocą narzędzia Certbot zazwyczaj można ustawić automatyczne odnawianie ważności.

W przypadku Let's Encrypt należy zadbać o to, aby była w ogóle możliwość wygenerowania takiego certyfikatu i jego instalacji - jest to możliwe na własnych serwerach, gdzie mamy prawa roota (tzw. VPS-y root) oraz u niektórych hostingodawców, którzy udostępniają taką możliwość w wygodny sposób (np. MyDevil.Net). Jednak większość firm serwerowych pośredniczy raczej w płatnych certyfikatach, czemu trudno się dziwić - to też usługa IT, która kosztuje.

Sam użytkownik Internetu może rozpoznać, jakiego certyfikatu używa dana witryna. W Google Chrome wystarczy kliknąć kłódkę, wybrać "Połączenie jest bezpieczne", a następnie "Certyfikat jest ważny". Weźmy przykład naszej strony:

Przykład strony korzystającej z Let's Encrypt

Widzimy jasno, że certyfikat (DV) został wystawiony przez Let's Encrypt, zwany również R3 (od RSA intermediate) i rzeczywiście ważność trwa 90 dni. Możemy również dostrzec informacje, dla jakiej domeny zostały wygenerowane dane. Jak już wspominałem, LE nie jest niczym złym i do stron firmowych, blogów czy nawet mniejszych sklepów całkowicie wystarczy. A teraz popatrzmy na to, co wyświetla się przy rozbudowanym kliencie Twittera, jakim jest TweetDeck.

Przykład TweetDecka, aplikacji korzystającej z certyfikatu OV

Tutaj widać już certyfikat OV wygenerowany dla konkretnej subdomeny, pełną nazwę organizacji, a także firmę wystawiającą. W tym przypadku możemy stwierdzić, że za poświadczenie odpowiada płatny, zweryfikowany dostawca i jest ważne nawet ponad rok. Ale to nie jest najwyższy poziom wtajemniczenia - banki oraz różne insytucje finansowe, prawne i rządowe zazwyczaj korzystają z najbardziej rozbudowanej formy certyfikatów, a mianowicie EV. W tym wypadku potwierdzenie podmiotu, który operuje danymi kluczami, jest widoczne już nawet przed wejściem do szczegółowych informacji (w starszych wersjach Chrome'a było widoczne tuż przy adresie). Oto przykład dla banku Santander Bank Polska S.A.:

Przykład Santander Bank Polska S.A., korzystającego z certyfikatu EV

Po drodze użyliśmy skrótów DV, OV i EV. Przyszedł czas, aby je wyjaśnić.

Rodzaje certyfikatów

Wspomnieliśmy już o źródłach pochodzenia certyfikatów, natomiast, aby nie było za prosto, mają one również swoje typy i poziomy weryfikacji.

Przede wszystkim, co istotne przy kupowaniu poświadczeń, mogą być one wystawiane na jedną domenę lub na cały pakiet domen wraz z subdomenami. Te drugie nazywają się certyfikatami Wildcard i pozwalają za jednym zamachem nabyć oznaczenie dla domeny i subdomeny, jak na przykład:

  • domena.pl
  • api.domena.pl
  • innasubdomena.domena.pl

Bardzo często oznacza się taki certyfikat typu Wildcard jako wystawiony dla *.domena.pl. Natomiast popularniejsze są poświadczenia na konkretną domenę - wówczas są one przyznawane na konkretny adres.

Już wcześniej napomknąłem, iż certyfikaty różnią się poziomem walidacji. Jak sobie udowodniliśmy, wygenerowanie poświadczenia nie jest specjalnie trudne, ale w przypadku pewnych instytucji (szczególnie tych, którym przekazujemy swoje pieniądze lub wrażliwe dane osobowe) użytkownik musi mieć pewność, że strona, na której jest, faktycznie należy do odpowiedniego podmiotu. W końcu oszust może stworzyć sobie "kłódeczkę" i stronę do złudzenia przypominającą konkretny bank, ale informacje przy certyfikacie powinny jednoznacznie odkryć karty. Jakie mamy zatem poziomy walidacji?

  • Domain Validation (DV) - najprostszy typ, który jedynie weryfikuje domenę, a więc sprawdza, czy rzeczywiście osoba generująca certyfikat ma władzę nad nią. W ten sposób działa choćby właśnie Let's Encrypt i opiera się o dane znalezione w rekordach DNS.
  • Full Organization Validation (OV) - w tym typie już dochodzi do weryfikacji organizacji, a nie tylko domeny. A zatem nie wystarczy pokazać, że dysponuje się danym adresem - należy również skontaktować się z podmiotem certyfikującym i potwierdzić informacje o firmie (zgodne z tymi w państwowych bazach), którą się reprezentuje.
  • Extended Validation (EV) - ten typ walidacji jest przeznaczony szczególnie dla instytucji o dużym stopniu zaufania, w którym organ certyfikujący sprawdza wiele informacji na różnych poziomach.

Więcej informacji możecie znaleźć w artykule firmy hostingowej cyber_Folks.

Jakiego certyfikatu potrzebuję?

Jeśli prowadzicie blog, macie stronę wizytówkową firmy, mały sklep czy portal o lokalnym charakterze oraz odpowiednie środki techniczne, to jak najbardziej wystarczy Let's Encrypt. Pod "odpowiednie środki techniczne" należy rozumieć możliwość obsługi certyfikatu na serwerze, głównie przez linię komend lub specjalny panel udostępniony przez hostingodawcę. Także systemy wewnętrzne najczęściej korzystają z takiej "ochrony", wyłącznie po to, aby przeglądarki nie zgłaszały zastrzeżeń.

Natomiast w przypadku poszerzenia swojej działalności (np. na rynek globalny), bardzo popularnego portalu lub przedsięwzięcia, w którym przetwarza się poufne dane, warto zastanowić się nad płatnym certyfikatem. Wbrew pozorom, nie jest on taki drogi (jeżeli nie zależy nam na najwyższym poziomie walidacji), a jest po prostu niezbędny, aby być wiarygodnym w oczach użytkowników oraz zdobywać klientów. Także osoby, których hostingodawca nie daje możliwości samodzielnego wgrywania certyfikatów SSL, muszą zdecydować się na tę opcję, choć na szczęście zwykle można to zrobić właśnie za pośrednictwem właściciela serwera.

Trochę szerzej możecie poczytać o tym w artykule na dhosting.pl.

Jak wygenerować certyfikat Let's Encrypt?

Nie będziemy tutaj wdawali się w szczegóły, gdyż te znajdziecie na stronie Certbotu dla poszczególnych środowisk (zarówno Windowsa, jak i Linuxa), natomiast chcemy przekazać parę uwag, jak do tego się przygotować.

Przede wszystkim należy upewnić się, czy w ogóle macie możliwość skorzystania z Let's Encrypt. W tym celu musicie mieć odpowiednie uprawnienia i dostęp do konsoli na serwerze (oczywiście, jeśli hostingodawca udostępnia panel do tego, to sprawa staje się znacznie prostsza). Następnie sprawdźcie, czy Wasz serwer jest dostępny w sieci publicznej - jest to potrzebne przy standardowym sposobie weryfikacji, gdyż zgłaszając potrzebę generacji certyfikatu, serwer Let's Encrypt upewni się, czy faktycznie macie dostęp do danej domeny (krótko mówiąc, "spinguje" Wasz serwer). W przypadku, gdy maszyna jest ukryta w sieci wewnętrznej lub za VPN-em, dostępne są inne sposoby weryfikacji, np. przez ustawienie odpowiedniego wpisu w rekordach DNS domeny.

Po pomyślnej generacji certyfikatu, zostaje on zapisany w określonym miejscu na serwerze w postaci kilku plików, co sprawia, że następnie należy dodać odpowiednie wpisy do plików konfiguracyjnych danego serwera HTTP - Apache2 lub NGINX-a. Także w tym może pomóc Certbot, automatycznie dopisując swoje reguły. Ostatnim krokiem jest zrestartowanie Waszego serwera HTTP (nie całej maszyny!). Dodatkowo, w przypadku, kiedy serwer jest dostępny publicznie, można również włączyć automatyczne odnawianie ważności certyfikatu.

Podsumowanie

Mam nadzieję, że udało się zebrać pigułkę informacji o certyfikatach SSL, a więc czymś, co właściwie stało się bardzo powszechne i nie jest już ciekawostką oraz wyznacznikiem zaawansowania technologicznego. Każdemu z nas zależy na bezpieczeństwie w sieci oraz tym, aby postrzegano nas jako bezpiecznych i zaufanych. Dlatego zadbajcie o to, aby Wasze portale i miejsca, którymi zarządzacie w cyberprzestrzeni miały tę słynną "kłódeczkę" przy adresie.

Pozdrawiam i dziękuję - Jakub Rojek.

We can do quite a bit and what is more, our skills and resources are at your disposal. Take a peek at what we can offer you.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and occasionally teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek