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.
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.