Generowanie certyfikatu Let’s Encyrpt SSL na Windows

Dzisiaj wygenerujemy samodzielnie darmowy certyfikat SSL od Let’s Encrypt na maszynie z systemem operacyjnym Windows, dodatkowo umieścimy go na serwerze www i zabezpieczymy nim naszą domenę ze stroną. Dzięki temu zobaczycie, że bezpieczeństwo wcale nie musi dużo kosztować.

Do wygenerowania certyfikatu pod Windows użyjemy dedykowanego przez Let’s Encrypt klienta – Certbot. Znajdziemy go na oficjalnej stronie projektu lub bezpośrednio pod tym linkiem.

Dodatkowo będziemy potrzebowali dostępu do strefy DNS naszej domeny. Nasz certyfikat będziemy bowiem weryfikować na podstawie dodanego do niej rekordu DNS. W naszym przypadku będzie to OVH

Następnie wygenerowany i zweryfikowany certyfikat SSL dodamy w postaci klucza prywatnego i klucza certyfikatu do naszego hostingu gdzie mamy zaparkowaną domenę.

Zaczynamy, pobranego Certbota instalujemy, otwieramy okno PowerShell jako administrator, przechodzimy do katalogu aplikacji i wydajemy poniższą komendę:

certbot certonly -a manual -d sprawdzone.it --preferred-challenges dns

Jeżeli chcemy użyć certyfikatu także dla sub-domen możemy zmodyfikować polecenie

certbot certonly -a manual -d *.sprawdzone.it -d sprawdzone.it --preferred-challenges dns

Po jej zatwierdzeniu wprowadzamy adres mailowy na który będą wysyłane przypomnienia o wygasającym certyfikacie. Następnie zostaniemy poproszeniu o zapoznanie się z warunkami korzystania i wyrażeniem na nie zgody. Jest ona wymagana aby przejść dalej, opcjonalna jest zgoda na otrzymywanie newslettera. Musimy też wyrazić zgodne na logowanie adresu IP z jakiego nastąpiło generowanie certyfikatu. Opcjonalnie może pojawić się pytanie o zgodę na newsletter.

Po poprawnym zarejestrowaniu konta zostaniemy poproszeni o dodanie rekordu TXT weryfikującego do strefy DNS domeny dla której generujemy certyfikat. Dopiero wtedy klikamy Enter

Przechodzimy do panelu zarządzającego naszą domeną i dodajemy stosowną wartość rekordu w jej strefie (w naszym przypadku jest to Panel OVH):

Po jego dodaniu, wracamy do okna PowerShell i klikamy Enter w celu weryfikacji. Jeżeli wszystko przebiegnie poprawnie (rekord jest rozpropagowany i dostępny w strefie), otrzymamy komunikat o poniższej treści zawierający ścieżki do klucza prywatnego oraz certyfikatu. Certyfikat jest już wygenerowany i gotowy do użycia.

Pozostaje ostatni krok czyli dodanie naszego certyfikatu do serwera www/hostingu gdzie jest zaparkowana domena i utrzymujemy naszą stronę. Logujemy się do panelu zarządzającego serwerem (w naszym przypadku nazwa.pl) , przechodzimy do sekcji certyfikaty SSL i dodajemy nowy certyfikat.

Następnie wprowadzamy klucz prywatny (kopiując zawartość privkey.pem) oraz certyfikat (zawartość fullchain.pem) do powyższych pól formularza

Klikamy, zapisz i włączamy certyfikat.

Otwieramy teraz naszą witrynę w przeglądarce i sprawdzamy certyfikat.

Uwaga użycie certyfikatu na samej stronie wymaga też czasami odpowiednich ustawień witryny np edycji pliku .htacces (przykład poniżej)

<IfModule mod_rewrite.c>    
  RewriteEngine on

  RewriteRule ^.well-known/ - [L,NC]

  RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

  RewriteCond %{HTTPS} !=on
  RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

</IfModule>

Popularne systemy CMS (Joomla, WordPress) mają odpowiednie wtyczki aby wymusić użycie SSL.

Pamiętajcie że tak wystawiony certyfikat jest ważny przez 3 miesiące, przed jego wygaśnięciem zostaniemy poinformowani odpowiednim mailem, następnie będziemy musieli powtórzyć czynności.