Jak zainstalować certyfikat HTTP SSL letsencrypt w hostingu (dla przykładu lh.pl)

Z Podręcznik Administratora by OPZ SGU
Przejdź do nawigacji Przejdź do wyszukiwania

Moment wprowadzenia obowiązku (chyba że będziemy chcieli aby użytkownik końcowy otrzymał od przeglądarki informację o wizycie na niebezpiecznej stronie) posiadania certyfikatu SSL jest bliski warto więc podejść do tematu już teraz.

W pierwszym odczuciu można by rzec że obowiązek posiadania certyfikatu SSL to "skok na kasę" jednak w 21 wieku, certyfikat podstawowy weryfikujący jedynie zgodność serwera i domeny powinien być dostępny śmiesznej cenie. Tutaj mamy zaskoczenie, ponieważ czołowi gracze postanowili subsydiować jego otrzymanie a co za tym idzie możliwość otrzymania takiego certyfikatu za darmo!.

W kwestii bezpieczeństwa nie różni się od niczym od certyfikatu "self signed" wygenerowanym w domowym zaciszu, jednak ma te przewagę że zostanie przez wiodące przeglądarki uznany za wystawiony przez zaufanego wystawcę.

Jeżeli jesteśmy administratorem serwera www, proces instalacji i wygenerowania certyfikatu dla let's encrypt jest banalnie prosty i skupia się do uruchomienia jednej aplikacji (https://github.com/certbot).

Co w sytuacji kiedy nie jesteśmy administratorem danego serwera, a hostingu współdzielonego?

W takim wypadku, zapraszam do lektury:


Oto w jaki sposób wygląda panel pozwalający na dodanie certyfikatu SSL w firmie lh.pl

Ssl1.png

Dzieli się on na 3 zasadnicze pola tekstowe:

  • Klucz prywatny
  • Certyfikat
  • Klucze CA


W zależności od hostingu, mogą one przybrać wygląd pola do uploadu pliku o skomplikowanie brzmiącej nazwie np .pem jednakże będzie to zwykły plik tekstowy, czyli nie wolno dać się zwieść pozorom i zaniechać instalacji:)


Wiedząc że nasz hosting obsługuje możliwość przesłania certyfikatu zajmijmy się jego wygenerowaniem.

W tym celu potrzebny nam będzie środowisko linuksowe, w moim wypadku serwer Debiana. (może być to środowisko headless, zwykły zdalny terminal ssh itp)


Przy pomocy git-a pobieramy repozytorium:

https://github.com/certbot/certbot


Następnie wywołujemy komendę

 ./certbot-auto certonly --manual -d pornofotyidoroboty.pl

gdzie pornofotyidoroboty.pl to domena dla której chcemy wygenerować certyfikat.

--manual oznacza że procedura weryfikacji posiadania praw do domeny odbędzie się manualnie a nie przez skrypt (co jest konieczne z uwagi na brak dostępu do terminala na współdzielonym hostingu).


Po wykonaniu tej komendy powita nas następujący komunikat

-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

Zgadzamy się, następnie zostaniemy poproszeni o utworzenie pliku tekstowego na serwerze (posłuży do weryfikacji praw do serwera i domeny)

-------------------------------------------------------------------------------
Create a file containing just this data:

SOMERANDOMDATA:SOMERANDOMDATA

And make it available on your web server at this URL:

http://pornofotyidoroboty.pl/.well-known/acme-challenge/SOMERANDOMDATA

-------------------------------------------------------------------------------
Press Enter to Continue
Waiting for verification...
Cleaning up challenges


Naszym zadaniem jest skopiowanie wyświetlonego tekstu i umieszczenie go w pliku tekstowym o zadanej nazwie, przed naciśnięciem przycisku enter, należy sprawdzić czy przechodząc pod podany url przeglądarką WWW otrzymamy nasz plik.

Jeżeli weryfikacja przebiegła pomyślnie, to otrzymamy następujący komunikat:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/pornofotyidoroboty.pl/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/pornofotyidoroboty.pl/privkey.pem
   Your cert will expire on 2018-05-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:



Jak widać nasz certbot wygenerował następujące pliki:

/etc/letsencrypt/live/pornofotyidoroboty.pl/fullchain.pem

/etc/letsencrypt/live/pornofotyidoroboty.pl/privkey.pem

które to należy umieścić w panelu hostingowym.


Zawartość privkey.pem zawiera klucz prywatny, i kopiujemy go w wypadku lh.pl w pole:

  • Klucz prywatny


Następnie otwieramy plik

/etc/letsencrypt/live/pornofotyidoroboty.pl/fullchain.pem

W jego wnętrzu, znajdują się dwa certyfikaty, rozdzielone tekstem

-----BEGIN CERTIFICATE-----
RANDOM DATA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
RANDOM DATA
-----END CERTIFICATE-----

pierwszy certyfikat kopiujemy w polę

  • Certyfikat

Drugi certyfikat kopiujemy w polę

  • Klucze CA


Zapisujemy ustawienia i odwiedzamy naszą stronę z komendą https

powinniśmy otrzymać zieloną kłódkę. Ssl2.png

Ponawiamy procedure dla su-domen. dla domeny bez SSL ustawiamy przekierowanie w .httaccess na wersję SSL