Darmowy certyfikat SSL/TLS z Let's Encrypt

W dzisiejszych czasach zielona kłódka obok adresu witryny w przeglądarce to standard. Szyfrowane połączenie ma zapewnić nam bezpieczeństwo podczas korzystania z sieci i uchronić przed nieautoryzowanym dostępem do naszych prywatnych danych. W świecie aplikacji webowych, gdzie bezpieczne połączenie zapewnia protokół HTTPS, do szyfrowania danych stosowany jest protokół TLS:
TLS (ang. Transport Layer Security) – przyjęte jako standard w Internecie rozwinięcie protokołu SSL (ang. Secure Socket Layer), zaprojektowanego pierwotnie przez Netscape Communications. TLS zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera...
Źródło: wikipedia.org
Jak uzyskać darmowy certyfikat TLS?
Informacja: W tytule celowo zastosowałem stwierdzenie 'certyfikat SSL', ze względu na fakt, iż dawniej protokół HTTPS do szyfrowania korzystał z SSL. Obecnie stwierdzenie 'certyfikat SSL' jest wciąż stosowane (niesłusznie) w kontekście protokołu szyfrowania, wykorzystywanego przez HTTPS. Właściwie to stosowanie protokołu szyfrowania SSL jest zabronione przez Internet Engineering Task Force ze względu na luki w bezpieczeństwie.
Wstęp
W dzisiejszym artykule przedstawię proces implementacji certyfikatów szyfrowania TLS dostarczanych przez urząd certyfikacji Let's Encrypt. W ten sposób dane pomiędzy przeglądarką, a aplikacją serwerową wymieniane będą przy użyciu protokołu HTTPS.
Instalacja narzędzia certbot
Aby uzyskać certyfikaty szyfrowania TLS od Let's Encrypt, potrzebne będzie nam narzędzie o nazwie certbot. Ułatwi nam ono pracę automatycznie pobierając i instalując certyfikaty za nas.
Przejdź do oficjalnej strony narzędzia certbot.
Z oznaczonych powyżej na czerwono pól wybierz kolejno serwer HTTP oraz system operacyjny, na których działa Twoja aplikacja.
Po wybraniu odpowiednich opcji, skrypt powinien wyświetlić instrukcje instalacji narzędzia certbot dla Twojego środowiska serwerowego.
W systemie operacyjnym Ubuntu i przy zastosowaniu serwera Apache, narzędzie certbot zainstalujemy za pomocą poleceń:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache
Instalacja certyfikatów
By automatycznie zainstalować certyfikat za pomocą narzędzia certbot w wierszu poleceń wykonaj poniższe polecenie:
$ sudo certbot --apache
Skrypt zapyta Cię o adres email, na który będą wysyłane powiadomienia odnośnie wygaśnięcia certyfikatu. Podanie adresu email jest obowiązkowe.
W następnym kroku algorytm poprosi o zapoznanie się z zasadami świadczenia usług i o ich akceptację. Zgoda jest konieczna aby kontynuować.
Wciśnij a.
Następnie na ekranie pojawi się prośba o udostępnienie EFF (jednemu z inwestorów w Let's Encrypt) Twojego adresu email w celu przesłania korespondencji związanej z działalnością firmy itp.
Udostępnienie adresu email jest nieobowiązkowe.
W kolejnym kroku, skrypt poprosi o wskazanie identyfikatora aplikacji serwerowej, dla której chcemy aktywować HTTPS.
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: mydummyweb.site
2: www.mydummyweb.site
-------------------------------------------------------------------------------
Wybieramy dwie liczby, oddzielone przecinkiem, które odpowiadają nazwom naszej aplikacji.
Teraz skrypt zainstaluje nasze certyfikaty.
Po chwili, jeżeli proces przebiegł pomyślnie, będziemy mieli możliwość ustawienia przekierowania połączeń pomiędzy przeglądarką, a aplikacją serwerową, z protokołu HTTP do HTTPS.
Wybierając 1, żadne zmiany w konfiguracji serwera nie zostaną wprowadzone.
Po wybraniu2, algorytm spróbuje automatycznie zaktualizować konfigurację, tak aby wszelkie połączenia przez HTTP były automatycznie przekierowywane na HTTPS.
Możemy wybrać 1. Konfigurację i tak zmodyfikujemy samodzielnie.
Modyfikacja konfiguracji hosta wirtualnego
Otwórz plik konfiguracyjny wybranego hosta wirtualnego. Plik ten powinien znajdować się w lokalizacji /etc/apache2/sites-enabled/mydomain.com.conf.
$ sudo nano /etc/apache2/sites-enabled/mydomain.com.conf
Na samej górze pliku dodaj poniższą zawartość:
<VirtualHost *:443>
DocumentRoot /var/www/mydomain.com/
ServerName mydomain.com
ServerAlias www.mydomain.com
<Directory /var/www/mydomain.com/>
Options +Includes
Options +FollowSymLinks -Indexes
</Directory>
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/mydomain.com/chain.pem
</VirtualHost>
mydomain.com zastąp nazwą własnej domeny.
Dodatkowo dodaj poniższy kod pomiędzy znacznikami *<VirtualHost *:80></VirtualHost>
Redirect / https://mydomain.com
Przeładuj konfigurację Apache:
$ sudo service apache2 reload
Gotowe!
Korzystając z narzędzia https://sslshopper.com sprawdź poprawność konfiguracji Twoich certyfikatów.
Ja ostatnio korzystam z https://caddyserver.com/ (też korzysta z lets encrypt)
Testowałem narzędzie i w zasadzie proces instalacji certyfikatów jest równie przyjazny co w narzędziu certbot :) Zdziwiony jestem natomiast, że samo pobranie instalatora caddy z ich oficjalnej strony na maszynę zdalną za pomocą narzędzia wget było nie możliwe. Powód? Brak bezpośredniego linku do archiwum. Na szczęście z pomocą przyszedł skrypt znajdujący się po adresem https://getcaddy.com/ :)
You got a 1.31% upvote from @upmewhale courtesy of @piotr42!