Darmowy certyfikat SSL | Rozdajemy zielone kłódki!

Darmowy certyfikat SSL

Jeszcze jakiś czas temu certyfikaty SSL dla stron WWW były dość trudne we wdrożeniu i przede wszystkim kosztowne w utrzymaniu. W efekcie większość stron zwyczajnie rezygnowała z bezpiecznego połączenia htts i zostawała przy standardowym http.

Z bezpiecznych połączeń przy pomocy certyfikatów SSL korzystały głównie duże serwisy, sklepy internetowe lub banki.

Dzisiaj sytuacja znacząco się zmieniła, przede wszystkim za sprawą Google i Let’s Encrypt.

Co to jest HTTPS i SSL/TLS?

HTTPS (Hypertext Transfer Protocol Secure) to szyfrowana wersja standardowego protokołu HTTP przeznaczonego do przesyłania stron www.

Podczas przesyłania strony przez HTTPS najpierw następuje wymiana kluczy TLS (Transport Layer Security), a dopiero później samo żądanie HTTP. Standardowo protokół https działa na porcie 443, a w przeglądarce możemy go zobaczyć jako zieloną kłódkę.

Natomiast TLS i SSL (Secure Socket Layer) to protokoły kryptograficzne zapewniające bezpieczną komunikację w sieci komputerowej.

Obie nazwy często wykorzystywane są zamiennie, jednak protokół TLS jest rozwinięciem SSL, wersja TLS 1.0 powstała po SSL 3.0.

StormIT https

StormIT https

Dlaczego powinniśmy się tym przejmować?

Idźmy dalej. Fajnie, że to jest, ale czemu właściwie powinniśmy się tym zainteresować?

Jeżeli prowadzimy sklep lub dowolną inną stronę, która przechowuje wrażliwe dane użytkownika, to raczej nie ma coś się zastanawiać. Pod tym względem ludzie są już na tyle wyedukowani, że nawet osoby typowo nietechniczne przed zalogowaniem się do banku sprawdzają, czy w adresie jest „zielona kłódeczka”.

Sprawa jest mniej oczywista, jeżeli zastanawiamy się nad wdrożeniem https dla strony firmowej lub bloga, gdzie jedyny formularz w systemie to formularz kontaktowy.

Bezpieczeństwo przesyłanych danych

Ponieważ podczas przesyłania danych po https najpierw następuje wymiana kluczy, przynajmniej teoretycznie zabezpieczamy się przed podsłuchaniem transmisji przez osoby trzecie oraz atakami typu „man in the middle”.

Widoczność w wyszukiwarkach

Google już oficjalnie potwierdziło, że https jest jednym z czynników rankingowych. Co prawda nie ma on jeszcze większego znaczenia, ale w przyszłości może się to zmienić.

Dobre wrażenie

Ludzie cały czas mają dobre skojarzenia z https i czują się bezpieczniej na takich stronach. Dodatkowo nasza strona wydaje się ważniejsza, bardziej „podobna do banku”, zaufana.

Ile kosztuje certyfikat SSL?

Wszystko zależy od  tego, jaki typ certyfikatu wybierzemy. Jednak u najbardziej znanych polskich dostawców (home, kei, az) w promocji podstawową wersję można dostać już od -nastu złotych w pierwszym roku.

To nie wydaje się dużo, jednak jeżeli jednak szukamy jeszcze tańszej alternatywy, warto zainteresować się projektem Let’s Encrypt.

Let’s Encrypt

Let’s Encrypt

Let’s Encrypt

W ramach projektu Let’s Encrypt na początku 2016 roku udostępniono użytkownikom darmowe certyfikaty TLS (X.509 Transport Layer Security). Cały proces wydawania certyfikatów jest w pełni zautomatyzowany, a same certyfikaty mają ważność tylko 90 dni.

Dlaczego tylko 90 dni?

To pytanie nasuwa się większości osób po zapoznaniu się z projektem. Jednak jak się chwilę nad tym zastanowić, przekłada się to na dwie bardzo ważne cechy tego rozwiązania:

  1. skradzione certyfikaty szybko stracą swoją ważność
    Nawet jeżeli dojdzie do utraty certyfikatu, zagrożenie będzie występowało tylko do momentu wygenerowania nowych kluczy. Dodatkowo zawsze można skrócić ten okres.
  2. wymuszenie automatyzacji
    Do tej pory większość certyfikatów miała okres ważności jednego roku. Jest to czas na tyle długi, że wiele osób zwyczajnie zapominało o odnowieniu certyfikatu, w efekcie czego stare klucze traciły ważność.
    Tak krótki okres ważności certyfikatu wymusza wprowadzenie rozwiązań automatycznych, które będą odnawiały certyfikaty bez ręcznej ingerencji użytkownika.

Jak wdrożyć Let’s Encrypt?

Projekt cieszy się coraz większą popularnością, dlatego coraz więcej dostawców usług hostingowych deklaruje automatyczne wsparcie dla tej usługi. Jeżeli natomiast nie mamy tyle szczęścia i na naszym hostingu nie możemy zrobić tego automatycznie, zawsze możemy skonfigurować usługę ręcznie.

DirectAdmin

Popularny panel administracyjny DirectAdmin od wersji 1.50.1 wspiera już Let’s Encrypt. Wystarczy w konfiguracji przestawić flagę letsencrypt=1 i użytkownik z poziomu panelu administracyjnego będzie mógł aktywować usługę dla swojej domeny [1].

Certbot

Certbot to rekomendowane na stronie projektu oprogramowanie do zarządzania certyfikatami [2].

Ten klient jednak do swego działania potrzebuje dostępu do SSH oraz uprawnień roota, przez co nie można z niego skorzystać na wielu współdzielonych hostingach.

acme-client

Acme-client od Certbot różni się przede wszystkim tym, że do swojego działania nie potrzebuje uprawnień roota.

Wygenerowanie certyfikatu

  1. Pobieramy najnowsze źródła klienta z repozytorium git:
    git clone https://github.com/kelunik/acme-client
    cd acme-client/
  2. Pobranie i instalacja systemu zarządzania pakietami Composer dla PHP
    php -version
    wget --output-document=composer-setup.php https://getcomposer.org/installer
    php composer-setup.php
    php composer.phar install --no-dev

    Biblioteka wymaga PHP w wersji co najmniej 5.5 lub 7 dlatego warto najpierw sprawdzić jaka wersja PHP jest podlinkowana.

  3. Wygenerowanie certyfikatu SSL
    php bin/acme setup --server letsencrypt --email kontakt@stormit.pl
    php bin/acme issue --domains stormit.pl:www.stormit.pl --path /home/[username]/domains/stormit.pl/public_html:/home/[username]/domains/stormit.pl/public_html --server letsencrypt

    Wygenerowane klucze będą dostępne w poniższej lokalizacji:

    • certyfikat
      data/certs/acme-v01.api.letsencrypt.org.directory/stormit.pl/fullchain.pem
    • klucz prywatny
      data/certs/acme-v01.api.letsencrypt.org.directory/stormit.pl/key.pem

Ustawienie certyfikatu w panelu administracyjnym hostingu

Każdy panel administracyjny będzie miał ten krok rozwiązany inaczej. W przypadku DirectAdmina trzeba najpierw włączyć obsługę SSL dla domeny, a następnie wkleić wygenerowane wcześniej klucze.

DirectAdmin SSL dla domeny

DirectAdmin SSL dla domeny

Klucze wklejamy w zakładce Zaawansowane opcje -> Certyfikaty SSL

DirectAdmin certyfikat SSL

DirectAdmin certyfikat SSL

Odnowienie certyfikatu

Po instalacji certyfikatu nie można zapomnieć, że ma on ograniczony czas ważności. Najlepiej zawczasu przygotować automatyczne mechanizmy do odnawiania kluczy.

Certbot udostępnia w tym celu specjalną komendę certbot renew [3], którą należy uruchamiać w cronie.

Natomiast w przypadku DirectAdmina, jeżeli mamy uruchomione natywne wsparcie dla Let’s Encrypt, będzie to odbywało się już bez naszego udziału. Można również przygotować skrypt generujący na nowe klucze, według kroków pokazanych wcześniej i aktualizować je przez API CMD_API_SSL[4].

Wdrożenie HTTS dla strony WordPress

Po odpowiednim skonfigurowaniu serwera możemy przejść do przystosowania naszej strony. W przypadku WordPress mamy do zrobienia prawie to samo, co w przypadku każdej innej strony. Przede wszystkim trzeba zaktualizować wszystkie odwołania z http na https i zapewnić odpowiednie przekierowania.

Zapewnienie tylko jednego adresu

Jest to szczególnie ważne z punktu widzenia SEO. Nasza strona powinna być dostępna tylko pod jednym adresem. Dlatego wszystkie odwołania przekierowujemy na nowy adres.

Najłatwiej będzie to zrobić przy pomocy pliku .htaccess. Ważne jest to, żeby zapewnić stałe przekierowania 301, a nie tymczasowe. Jest to jeden z częstszych błędów.

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{SERVER_PORT} 80
        RewriteRule ^(.*)$ https://stormit.pl/$1 [R=301,L]
</IfModule>

Zmiana adresu w konfiguracji WordPress

W konfiguracji musimy jeszcze zmienić adres strony: Ustawienia -> Ogólne 

WordPress zmiana url

WordPress zmiana url

Aktualizacja starych odnośników

Pozostaje nam jeszcze aktualizacja wszystkich starych odwołań. Dla WordPress będą to przede wszystkim zaszyte w szablonie odwołania do obrazków oraz adresy url w treści postów.

Treść postów można zmienić jednym zapytaniem SQL. Zrób tylko najpierw kopię bezpieczeństwa i podmień adres domeny na swój.

UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, 'src="http://www.your-site.com', 'src="https://www.your-site.com');

Jeżeli tego nie zrobisz, w przeglądarce będzie pojawiało się ostrzeżenie, że nie wszystkie treści są poprawnie zabezpieczone.

Warto również zaktualizować wszystkie linki prowadzące do naszego serwisu, jednak ponieważ mamy zrobione przekierowanie 301 nie jest to konieczne.

Weryfikacja poprawności certyfikatu

Podstawowy test wykona za nas już sama przeglądarka. Jeżeli widzimy zieloną kłódkę i nie pojawiają się żadne ostrzeżenia, to możemy przejść dalej. Najczęściej ostrzeżenia powodują obrazki, dla których nie został zmieniony adres url.

Do przetestowania samego certyfikatu możemy wykorzystać jeden z testerów online, np. ssllabs.

Przekierowania

Powinniśmy też sprawdzić poprawność przekierowań. Można to zrobić np. przy pomocy Google Chrome i narzędzi dla programistów. Wpisujemy adres z http i sprawdzamy przekierowania w zakładce Network.

Chrome SSL

Chrome SSL

Podsumowanie

Bezpieczeństwo transakcji w Internecie to temat, któremu poświęca się coraz więcej uwagi. Dopóki takie firmy jak Google będą swoimi działaniami to wspierały i będą powstawały takie projekty jak Let’s Encrypt, możemy liczyć, że sytuacja będzie cały czas się zmieniała, z korzyścią dla wszystkich użytkowników sieci.

Niezależnie od tego, czy prowadzisz sklep internetowy, czy prywatnego bloga warto przynajmniej zapoznać się z najnowszymi trendami, zwłaszcza jeżeli nie wiąże się to z dodatkowymi kosztami.

Linki


20+ BONUSOWYCH materiałów z programowania

e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!

Jak zostać programistą

[su_button url="/ebook/?r=1&utm_campaign=w_pt" target="blank" style="soft" size="8" center="yes" icon="icon: download" desc="e-book" title="Pobieram darmowy e-book"]Odbieram Dostęp Do E-Booków![/su_button]

No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *