Zabezpiecz swoją stronę www za darmo certyfikatem SSL od Let’s Encrypt

Jakiś czas temu pisałem o starcie usługi dostarczające darmowe certyfikaty SSL dla stron internetowych – Let’s Encrypt.

Usługa wyszła już z fazy beta, nadal jest w fazie beta jednak działa naprawdę dobrze i otrzymanie certyfikatu przebiega bez żadnych problemów.

holas.pl z certyfikatem z Let's Encrypt

Aby z niej skorzystać trzeba pobrać klienta i postąpić zgodnie z jego instrukcją. Niestety aktualnie nie ma paczki na Debiana Jessie więc postanowiłem użyć jednego z alternatywnych klientów, który jest skryptem w bashu i jest prosty jak „konstrukcja cepa” – https://github.com/Neilpang/acme.sh

Używając powyższego skryptu można wszystko zrobić dosłownie w 5 minut :). Wspomnę tylko, że skrypt ma instalator (pkt. 1 lub 2 ze strony na githubie) i inne ułatwiacze ale ja lubię mieć kontrolę nad tym co się dzieje więc z nich nie korzystałem.

Na wstępie ustalmy do celów poradnika, że wszystko będziemy wykonywać z root’a (oczywiście nie trzeba ale zakładamy tak w celu uproszczenia) oraz:

/root/.acme.sh/acme.sh – miejsce składowania skryptów klienta
mojastrona.pl – strona, dla której chcemy uzyskać certyfikat
/mnt/www/mojastrona.pl – katalog na dysku naszej strony
/etc/apache2 – lokalizacja apache wraz z plikami konfiguracji

Pierwszym naszym krokiem powinno być pobranie wymaganych plików klienta. W tym celu przechodzimy (zakładamy w razie potrzeby) do katalogu

/root/.acme.sh/acme.sh

i wykonujemy komendę

git clone https://github.com/Neilpang/acme.sh

Jeśli nie mamy gita to go instalujemy lub wchodzimy na stronę projektu, ręcznie pobieramy pliki i je wypakowujemy.

Następnym krokiem (dla wygody tylko) jest zrobienie symlinka z katalogu gdzie będą nasze certyfikaty do katalogu apache. Wykonujemy to komendą

ln -s /root/.acme.sh/ /etc/apache2/letsencrypt

Po wykonaniu powyższych kroków oraz upewnieniu się, że nasza strona jest dostępna z internetu należy pobrać certyfikat

./acme.sh issue /mnt/www/mojastrona.pl/ mojastrona.pl

lub jeśli mamy jakieś aliasy (np. www.mojastrona.pl) to

./acme.sh issue /mnt/www/mojastrona.pl/ mojastrona.pl www.mojastrona.pl

Jeśli nasza strona była dostępna z internetu to powinniśmy otrzymać certyfikat, a potrzebne pliki zapisane zostaną w katalogu

/root/.acme.sh/mojastrona.pl/

Pozostało nam już tylko poprawić konfigurację apache aby wskazać nasze certyfikaty (dobry poradnik jak skonfigurować SSL w apache znajduje się tu – krok 3 i 4). W tym celu w pliku konfiguracyjnym należy wskazać tak aby opcja

SSLCACertificateFile  kierowała do ca.cer
SSLCertificateFile kierowała do pliku .cer
SSLCertificateKeyFile kierowała do pliku .key

np.

SSLCACertificateFile /etc/apache2/letsencrypt/mojastrona.pl/ca.cer
SSLCertificateFile /etc/apache2/letsencrypt/mojastrona.pl/mojastrona.pl.cer
SSLCertificateKeyFile /etc/apache2/letsencrypt/mojastrona.pl/mojastrona.pl.key

oraz przeładować apache

service apache2 reload

O tego momentu strona powinna zgłaszać się z certyfikatem od Let’s Encrypt.

Dodatkowo warto ustawić automatyczne odnawianie certyfikatów gdyż mają one ważność 90 dni.

W tym celu najprościej stworzyć wykonywalny skrypt, np.

acme.sh_cron

z zawartości np.

#!/bin/sh
/root/.acme.sh/acme.sh/acme.sh cron >> /var/log/le-renew.log
service apache2 reload

i przenieść go do

/etc/cron.daily

Jak widać proces nie jest przesadnie skomplikowany i po wstępnej konfiguracji raczej banalny. Docelowo prawdopodobnie i tak wybiorę oficjalnego klienta ale pierw musi w repozytoriach Debiana Jessie zostać udostępniona oficjalna paczka.

Powodzenia w szyfrowaniu! 🙂

EDIT:
Skrypt zmienił nazwę więc powyższy opis został odpowiednio dostosowany.

Dodaj komentarz

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