Let’s encrypt – Zielona ‚kłódka’ dla naszej strony www czyli darmowy certyfikat SSL

Let’s encrypt to inicjatywa, której celem jest stworzenie platformy pozwalającej na wystawianie poprawnych certyfikatów, dzięki, którym nasza strona może oferować szyfrowane połączenie SSL, a przy tym certyfikat wystawiającego jest certyfikatem zaufanym przez co nie grozi nam i odwiedzającym naszą stronę komunikat o niezaufanym certyfikacje (jak ma to miejsce w przypadku generowania certyfikatu podpisanego przez samego siebie)

Na wstępie zaznaczę, że wpis ukierunkowany jest jako kontynuacja wpisu: Apache Część 2: Włącz SSL dlatego jeżeli interesuje Ciebie uruchomienie SSL na swoim serwerze Apache zachęcam do przeczytania poprzedniego wpisu.

Na dzień 18.03.2016 letsencrypt pozwala na automatyzację instalacji certyfikatów na platformie debian/ubuntu z serwerem Apache2, dla pozostałych platform czynność instalacji wymaga konfiguracji ręcznej.

Przygotowanie

Pierwszym krokiem jest zainstalowanie clienta git, jeżeli takowego nie posiadamy:

#debian/ubuntu
apt-get install git

Kolejnym krokiem jest pobranie najnowszego klienta letsencrypt, którzy przeprowadzi nas przez proces generowania i podpisywania kluczy:

cd /opt
git clone https://github.com/letsencrypt/letsencrypt

W przyszłości możemy aktualizować klienta letsencrypt poprzez komendę ‚pull’:

cd /opt/letsencrypt
git pull

Podczas aktualizacji może pojawić się komunikat o tym, iż zmodyfikowaliśmy naszą wersję aplikacji, ale jest na to bardzo łatwy fix:

cd /opt/letsencrypt
git stash

 

Do dzieła!

Metoda 1: Automatyczna konfiguracja Apache2 + Debian/Ubuntu

./letsencrypt-auto --apache -d example.com

 

Metoda 2: Otrzymanie certyfikatów dla dowolnego serwera www (moduł webroot)

./letsencrypt-auto certonly --webroot -w /var/www/example -d example.com -d www.example.com -w 
/var/www/example2 -d example2.com

 

Metoda 3: Otrzymanie certyfikatów korzystając z wbudowanego serwera www (moduł standalone)

#należy wyłączyć usługę www jeżeli takowy posiadamy
./letsencrypt-auto certonly --standalone -d example.com -d www.example.com

 

Jeżeli korzystaliśmy z modułu ‚apache’ wszystko powinno już działać, w innym wypadku należy ręcznie dodać certyfikaty do plików konfiguracyjnych.

Certyfikaty zapisywane są w: /etc/letsencrypt/archive jednak najwygodniej korzystać z linków utworzonych w: /etc/letsencrypt/live/

 

Odświeżanie certyfikatów!?

Jako, że stan dzisiejszy (18.03.2016), certyfikaty wystawiane przez Let’s Encrypt mają termin ważności 90 dni. Odświeżenie certyfikatów czyli defacto wygenerowanie nowych można wykonać ręcznie. Można też poprzez skrypt zaproponowany przez samych twórców letsencrypt.

Na wstępie warto przeprowadzić tzw. próbne uruchomienie (en. ‚dry run’):

/opt/letsencrypt/letsencrypt-auto renew --dry-run

Jeżeli próbne uruchomienie przejdzie pomyślnie, możemy bez obaw uruchomić aplikację bez –dry-run:

/opt/letsencrypt/letsencrypt-auto renew

 

Komenda ‚renew’ korzysta z ostatnio ustawień dla poszczególnych domen, dlatego jeżeli zechcemy np. zmienić wielkość klucza RSA podczas generowania go możemy użyć komendy:

#4096bit
/opt/letsencrypt/letsencrypt-auto renew --rsa-key-size 4096

 

Aplikacja podczas odnawiania certyfikatów sprawdza czy dane certyfikaty są ważne, jeżeli tak nie odnawia ich bez potrzebny, zachowanie to można ominąć poprzez parametr ‚--force-renew':

/opt/letsencrypt/letsencrypt-auto renew --force-renew

 

Automatyzacja odświeżania certyfikatów 🙂

Jest to kopia skryptu ze strony https://letsencrypt.org

# le-renew
#!/bin/sh
if ! /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi

Dodajmy jeszcze wykonywanie skryptu do cron-a, tak by nie zapomnieć o naszych certyfikatach

#crontab -e
0 * * * * le-renew

Uzyskany przez to próbe odnowienia certyfikatów co godzinę.

 

Oczywiście możemy pominąć skrypt i dodać wpis do cron-a bezpośrednio bez logowania z wymuszeniem podpisania certyfikatu:

#crontab -e
0 0 1 * * /opt/letsencrypt/letsencrypt-auto renew --force-renewal

W ten sposób każdego pierwszego dnia miesiąc wygeneruj się nowy certyfikat dla naszych stron, a biorąc pod uwagę fakt, iż mają one ważność 90 dni, mamy teoretycznie max 3 próby, aby przed ich wygaśnięciem je odnowić.

 

Odwołanie certyfikatu:

/opt/letsencrypt/letsencrypt-auto revoke --cert-path example-cert.pem

 

Aktualizacja 11/06/2016:

Aby zaktualizować klienta letsencrypt należy w katalogu aplikacji uruchomić gita

git pull

Może się zdarzyć, że podczas że git będzie usilnie twierdził, że nasza wersja jest zmodyfikowana i bez commitu nie zrobić komendy pull, lekarstwem jest wyresetowanie git repo:

git reset --hard

 

Aktualizacja 03/09/2017

letsencrypt zmieniło nazwę na certbot

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*