Certyfikat SSL dla twojej strony WWW

Pora na Certyfikat SSL dla twojej strony internetowej!

Dużo się ostatnio mówi o zabezpieczeniu stron WWW certyfikatem SSL - czyli tzw. zieloną kłódką. O ile sam pomysł jest wysoce wskazany, nie tylko ze względu na bezpieczeństwo ale również ze względu na pozycjonowanie (SEO), to wiele stron, tworząc artykułu na ten temat odwołuje się przede wszystkim do płatnych rozwiązań, podczas gdy istnieją bardzo dobre darmowe rozwiązania.

Jeżeli masz małą stronę prywatną, firmową, rozpoczynasz sprzedaż przez internet za pomocą twojej strony, mam dla ciebie jedną radę. Nie marnuj pieniędzy - nie kupuj certyfikatu SSL zanim nie spróbujesz darmowych opcji. Jeżeli na końcu uznasz, że potrzebujesz czegoś lepszego, wówczas inwestycja będzie wysoce wskazana.

Przez cały rok 2016 wdrażałem aktywnie oraz przede wszystkim testowałem w praktyce działanie stron poprzez HTTPS (SSL) przy pomocy rozwiązania, które nie kosztowało mnie nic (darmowy Certyfikat SSL). Strony, którymi zarządzam lub pomagam w zarządzaniu zorientowane są na sprzedaży swoich usług, które z reguły nie pasują się w schemat typu “Kup Teraz > Zapłać > Oczekuj na dostawę”.

I tak, w 2016, wszystkie moje strony, gdy się je odwiedza, są serwowane ściśle przez HTTPS (SSL) lub jak zwał, tak zwał… zieloną kłódeczkę.

Każda wizyta na stronie kierowana jest przez bezpieczne połączenie SSL, zabezpieczone za równo po stronie domeny jak i konta hostingowego.

W rezultacie, cały ruch jest na tyle bezpieczny, na ile może być z tego typu rozwiązaniem.

A więc, dlaczego by nie spróbować tego na twojej stronie WWW przed wydaniem pieniędzy na coś, co nie wiemy czy nam się zwróci?

Mam nadzieje, że powyższy wstęp cię zainteresował i jesteś ty, jak i twoja strona gotowa na zmiany szykujące się w rok 2017, w którym to roku, strony serwowane przez HTTPS (SSL), będą (zobaczymy!) traktowane bardziej priorytetowo od tych, serwowanych w mniej bezpieczny sposób, jak to miało miejsce do tej pory.

Nim zaczniemy, jest jedna wada rozwiązania serwowania strony ściśle przez SSL (ściśle, czyli żaden ruch nie jest serwowany przez HTTP, natomiast jest przekierowywany na HTTPS). Jeżeli jakiś kraj narzuca cenzurę na obywateli i podsłuchuje ich na każdym kroku (sic!), czasem możliwe jest, że tego typu strony są po prostu niedostępne, z prostego względu - SSL blokuje poniekąd możliwość permanentnej inwigilacji. Ma to miejsce przede wszystkim w krajach komunistycznych oraz m.in. Chinach. Mam tylko nadzieje, że “mądrzy” politycy u władzy w Polsce nie zastosują tego typu “inwigilacji Macierewicza” i nie będziemy kolejnym zacofanym krajem w środku Europy.

A więc zacznijmy.

Moje rozwiązanie, na którym bazuję to przede wszystkim CloudFlare oraz koncie hostingowym z DirectAdmin, które możecie kupić tutaj.

Dodatkowo, poniższe działania wymagają co nieco wiedzy związanej z hostingiem, domenami, DNS’ami oraz certyfikatami SSL.

Dużo się w ostatnich dniach mówi o CloudFlare ze względu na wyciek danych (tzw. CloudBlead). Niestety, serwując 5 milionów stron, może się zdażyć nawet najlepszym prosty błąd w kodzie, który spowoduje że 150 stron będzie indeksowana w wyszukiwarkach tj. Google zawierając dane, które nigdy nie powinny się tam znaleźć.

Więcej o CloudBlead możesz poczytać tutaj.

Nie polecam czytania polskich tłumaczeń, gdyż są one z reguły bardzo stronnicze i polecam odwołanie do źródła - chociażby na blogu CloudFlare.

Na wstępie musimy założyć konto na CloudFlare i dodać naszą domenę (którą musimy już posiadać). Domenę możecie kupić tutaj, będąc w Polsce, lub tutaj, będąc w Wielkiej Brytanii.

Podczas dodawania domeny, CloudFlare przeszuka dotychczasowe wpisy DNS związane z aktualnym wskazaniem na adres IP serwera ze stroną, serwerami poczty MX itp. Po zakończeniu wstępnego dodawania, należy przejrzeć bierzące ustawienia i poprawić/dodać brakujące elementy. Czasami wpisy TXT się nie przeniosą, więc należy dodać je z konfiguracji DNS dla domeny u naszego aktualnego operatora.

add website add website scanning add website scan complete add website verify your dns records

Dalej mamy do wyboru Plan, który zawiera również opcję darmową, którą wybieramy.

Ostatnim krokiem jest przekierowanie naszej domeny na nowe serwery nazw, tzw. Namservers.

add website select plan add website change nameservers

Od dej pory, wszelkie zmiany w ustawieniach DNS będzie dokonywać się z poziomu CloudFlare. Jest to konkurencyjne rozwiązanie do naszego rodzimego, darmowego rozwiązania freedns.42.pl. Dodatkowo, aktualizacja wpisów DNS trwa znacznie szybciej pomiędzy dużymi serwerami nazw (tj. Google, 8.8.8.8) a niżeli przy zastosowaniu innego rozwiązania.

Na początku nasza domena będzie ze statusem Pending (Oczekującym) do momentu, aż zmiany w serwerach nazw, DNS dla domeny zostaną rozpropagowane na światowych serwerach nazw.

W momencie, gdy domena pomyślnie przeniesiona, jeżeli chodzi o serwer nazw do CloudFlare, nasza usługa będzie Active (aktywna).

add website status pending add website active

Jeżeli poprawnie ustawiliśmy wpisy DNS dla domeny, wówczas możemy nawet nie zauważyć żadnej zmiany w funkcjonowaniu poszczególnych elementów wpisów DNS a co za tym idzie domeny, strony WWW, poczty w domenie itp.

CloudFlare to nie tylko Certyfikat SSL. SSL to po niekąd usługa dodatkowa. CloudFlare służy przede wszystkim do buforowania ruchu do strony oraz samej strony (tzw. cache). Powoduje to, że strona, poczas wizyty przez odwiedzającego serwowana jest ze znacznie szybszych serwerów - szczególnie, gdy treść nie zmieniła się w stosunku z tą, dostępną na właściwym koncie hostingowym.

Dodatkowo, CloudFlare ma również dużo innych opcji, o których należy po prostu poczytać. Nie będę ich tutaj omawiał, ale jeśli masz jakieś pytanie, możesz śmiało wysłać do mnie maila.

CloudFlare pozwala wybrać, które wpisy DNS mają być serwowane przez ich serwer buforujący, a które nie. Wpisy, które chcemy aby były objęte certyfikatem SSL muszą być serwowane przez CloudFlare i ustawienie DNS musi być z tzw. “chmurką”.

dns setting cloud

Następnie co nas interesuje to zakładka Crypto.

cloudflare menu bar crypto

W polu SSL mamy do wyboru kilka rozwiązań. Domyślnie CloudFlare serwuje stronę przez SSL w trybie Flexible (elastycznym).

Ruch kierowany od odwiedzającego do twojej domeny przez HTTPS (ale nie HTTP), kierowany jest na serwer CloudFlare. Tam “zakładana jest kłódeczka” i dalej serwowana do odwiedzającego w postaci zaszyfrowanej - zawierającej Certyfikat SSL.

Czasami, to rozwiązanie nie jest idealne, jeżeli CloudFlare nie posiada zbuforowanej strony, wówczas kieruje ruch bezpośrednio do serwera i Certyfikat SSL (“kłódeczka”) żądany jest ze strony konta hostingowego - gdzie nie zawsze może to być ustawione, lub być użyty samo-podpisywalny certyfikat powodujący wyświetlenie ostrzeżenia w przeglądarce.

O ile to rozwiązanie jest dobre, Full - lub w moim przypadku Full (Strict), jest o wiele leprze.

cloudflare crypto flexible cloudflare crypto ssl list cloudflare crypto full strict

W przypadku Full (strict), certyfikat serwowany przez CloudFlare dodany jest również na serwerze / na koncie hostingowym. Dzięki temu, zarówno CloudFlare jak i serwer może zweryfikować ruch z prawidłowym certyfikatem bez niepotrzebnych ostrzeżeń.

Opcja Full (strict) jednocześnie sprawdza, czy certyfikat serwowany przez CloudFlare jest zgodny z certyfikatem na koncie hostingowym. Oba muszą pasować do siebie, aby wszystko działało, dlatego dalej pokażę jak to zrobić.

cloudflare flexible full strict differences

Po pierwsze w zakładce Crypto > SSL wybieramy Full (Strict).

Może to chwilowo “popsuć” ruch do naszej strony poprzez HTTPS. Ruch HTTP pozostanie bez zmian (o ile wasza strona jest serwowana przez HTTP).

Następnie potrzebujemy Origin Certificate - czyli certyfikat, który będzie serwowany po stronie serwera / konta hostingowego. Certyfikat ten należy utworzyć.

Crypto > Origin Certificate > Create certificate

Pozostawiając domyślnie wybrane opcje, upewniamy się, że nasz certyfikat będzie zawierał naszą główną domenę (bez WWW itp.jpg) oraz tzw. Wildcard, czyli wszystko, co znajdzie się przed (tj. WWW).

Ważność certyfikatu 15 lat, aby nie zawracać sobie tym głowy.

Po czym przechodzimy dalej (Next).

cloudflare crypto origin certificate cloudflare crypto origin certificate create cloudflare crypto origin certificate create 2 cloudflare crypto origin certificate error safari

Na następnej stronie kreatora otrzymamy certyfikat (Origin Certificate) oraz klucz prywatny (Private key).

cloudflare crypto origin certificate pem cloudflare crypto origin certificate pem2 cloudflare crypto origin certificate private key

Kopiujemy oba, certyfikat i klucz do notatnika, jeden pod drugim.

Następnie pora na ustawienie certyfikatu na naszym koncie hostingowym.

Logujemy się do naszego konta hostingowego z dostępem do panelu DirectAdmin.

Wybieramy naszą domenę (jeżeli mamy więcej niż jedną).

Następnie przechodzimy do Opcji Zaawansowanych (na samym dole) > Certyfikat SSL.

directadmin directadmin select domain directadmin main screen directadmin opcje zaawansowane certyfikat ssl

Tutaj będziemy mieli kilka opcji do wyboru.

Domyślnie będzie wybrany certyfikat serwera (Używaj certyfikatu serwera), ale nas interesuje opcja “Wklej wstępnie wygenerowany certyfikat i klucz”.

W puste pole wklejamy wcześniej skopiowany do notatnika Certyfikat SSL i klucz prywatny po czym wybieramy opcję Zapisz.

I tak, nasz serwer będzie serwował certyfikat dla ruchu HTTPS zgodny z CloudFlare.

directadmin certyfikat ssl default directadmin certyfikat ssl blank directadmin certyfikat ssl paste directadmin certyfikat ssl success

Jeżeli macie problem z dodaniem certyfikatu / klucza, lub wasz dostawca nie udostępnia tej opcji, musicie się z nim skontaktować.

Kiedyś, tego typu zabieg wymagał wykupienie Stałego adresu IP dla konta, co generowało dodatkowe koszta, jednakże już od jakiegoś czasu nie ma potrzeby posiadania własnego adresu IP aby dodać certyfikat SSL.

Teraz należało by sprawić, aby nasz ruch na stronę odbywał się tylko przez SSL.

Jeżeli używamy Wordpress, należy zmienić adres naszej strony z http:// na https:// w Opcjach.

Ustawienia > Ogólne > Adres Wordpress oraz Adres witryny

wordpress ogolne

Jeżeli nasza strona była serwowana przez jakiś czas przez HTTP, wówczas niektóre nasz posty mogą zawierać odwołanie do http:// w linkach nawet po zmianie adresu strony na https://.

Niestety, nie ulegnie to automatycznej zmianie i może powodować występowanie błędów związanych z tzw. insecure content, czyli podczas serwowania strony przez HTTPS część elementów będzie serwowana przez HTTP - nie dobrze.

Aby to naprawić, można przejść do każdego z postów na stronie i zrobić to ręcznie, lub zmienić wpisy w bazie danych SQL.

Wszystkie wpisy http:// należy przepisać na https://

Nic strasznego, gdyż w tym celu przychodzi nam na pomoc wtyczka Better Search Replace.

Po jej zainstalowaniu i uruchomieniu, należy wybrać Search for (czyli nasz adres strony z http://) oraz Replace with (czyli nasz adress strony z https://).

Zaznaczmy wszystkie tabele naszej bazy danych (Ctrl na pierwszej tabeli, Ctrl+Shift na ostatniej tabeli) i wybieramy Run Search/Replace.

wordpress better search replace wordpress better search replace settings

Nie obawiajcie się! Plugin jest ustawiony domyślnie na tak zwany “dry run”, czyli wyszukanie i symulowanie zmiany.

Jeżeli jesteśmy pewni, że chcemy dokonać ww. zmiany, wówczas musimy odznaczyć Run as dry run i wybrać jeszcze raz Run Search/Replace.

Tyle jeżeli chodzi o Wordpress.

Wracając do CloudFlare, warto w zakładce Crypto włączyć:

  • HSTS
  • Authenticated Origin Pulls
  • Opportunistic Encryption
  • TLS 1.3

cloudflare crypto hsts cloudflare crypto hsts1 cloudflare crypto hsts2 cloudflare crypto other options

Bez względu na to, czy używamy Wordpress i zmieniliśmy http:// na https://, możemy wymusić serwowanie strony przez https:// (wówczas, gdy wersja http:// naszej strony nadal jest dozwolona) poprzez ustawienie odpowiedniej reguły w **Page Rules **(wybieramy z głównego menu).

Tworzymy nową regułę dla adresu http:// zawierającego dwa WildCard’y wraz z opcją Always Use HTTPS. Zapisujemy i aktuwujemy (Save and Deploy).

cloudflare page rules

I to by było na tyle.

Nasza strona powinna być serwowana przez HTTPS odrazu, ale warto pozwolić na pełne zmiany do 24h.

Oczywiście, należy wyczyścić również dane podręczne przeglądarki (chociażby z użyciem CCleaner) lub otworzyć naszą stronę w trybie Incognito aby zobaczyć czy wszystko działa tak jak należy.

Jeżeli mamy ustawione Google Analytics, należy zadbać o modyfikację ustawień z uwzględnieniem https://

Jeżeli używamy Google Search Console (Bing Webmaster Tools, Yandex Webmaster), należy dodać dodatkową wersję naszej strony dla adresu https:// jak również mapy strony w adresie z https://

I to by było już napewno na tyle.

Mam nadzieje że pomogłem. Jeżeli tak, daj znać w komentarzu. Jeżeli masz jakiś problem, również napisz w komentarzu, a postaram się pomóc, o ile będę mógł, gdyż różni usługodawcy różnie implementują poszczególne opcje, dla tego ja polecam sprawdzone rozwiązanie.

Dołącz do dyskusji