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