Nastały piękne czasy, gdzie jest możliwe dostać coś za darmo. Certyfikat z zieloną kłódką, który jest akceptowany przez przeglądarki internetowe, nawet przez Outlooka i klienta pocztowego na smartfonie.
Let’s Encrypt – informacje o projekcie znajdziesz na stronie https://letsencrypt.org/
Instalacja jest bardzo prosta (testowałem na Debianie Jessie) Na stronie projektu jest opis, ale ja chcę to jeszcze prościej przedstawić.
Mój Debian nie posiadał paczki letsencrypt, więc pobrałem go za pomocą GITa:
UPDATE 2018.03: Nowe dystrybucje posiadają już gotową paczkę i powstają też nowe rozwiązania jeszcze prostsze – na stronie projektu piszą coś o ACME, co wydaje mi się, że jest totalnym automatem od strony Apache do tworzenia i aktualizacji certyfikatu, także potraktuj mój artykuł jako wstęp lub zrozumienie pomysłu, ale i nie tylko)
apt-get install git cd /etc mkdir opt cd opt git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto certonly --webroot -w /var/www/www.mojastronassl.pl -d www.mojastronassl.pl -d mojastronassl.pl
Po tej operacjj zostanie utworzony folder /etc/letsencrypt z kilkoma podfolderami, ale nas będzie interesował tylko jeden do celów konfiguracji serwera Apache:
/etc/letsencrypt/live/www.mojastronassl.pl/live
Tu znajdują się linki do plików certyfikatu:
/etc/letsencrypt/live/www.mojastronassl.pl# ls -l cert.pem -> ../../archive/www.mojastronassl.pl/cert1.pem chain.pem -> ../../archive/www.mojastronassl.pl/chain1.pem fullchain.pem -> ../../archive/www.mojastronassl.pl/fullchain1.pem privkey.pem -> ../../archive/www.mojastronassl.pl/privkey1.pem
Konfiguracja Apache:
ServerName www.mojastronassl.pl ServerAlias mojastronassl.pl DocumentRoot /var/www/www.mojastronassl.pl SSLEngine On SSLCertificateFile /etc/letsencrypt/live/www.mojastronassl.pl/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.mojastronassl.pl/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.mojastronassl.pl/chain.pem
Oczywiście zakładam, że ogólnie masz pojęcie o konfiguracji szyfrowania SSL pod Apache.
Restart serwera Apache:
killall -HUP apache2
lub
/etc/init.d/apache2 restart
lub jakikolwiek inny ulubiony
Uruchom teraz przeglądarkę internetową i ciesz się zieloną kłódką na swojej stronie.
Odnawianie certyfikatu…albo raczej automatyczne odnawianie certyfikatu.
Umieść poniższe w cronie i zapomnij o potrzebie pamiętania o odnawianiu certyfikatów, wgrywaniem ich na serwer…
cd /etc/opt/letsencrypt ./letsencrypt-auto renew
Have fun
Let’s Encrypt i serwer pocztowy
Testowałem na demonach Postfix, Courier, Dovecot w protokołach SMTP, IMAP, POP3 w wersjach TLS oraz SSL, a klienty pocztowe: MS Outlook i klient mailowy na Androidzie – bardzo ładnie akceptują certyfikat i bez problemu wszystko działa w obie strony.
Jedyne tylko utrudnienie jest takie, że konfiguracja Courier IMAP wymaga podania pliku z certyfikatem, w którym są wszystkie rzeczy: certyfikaty i klucze prywatne, natomiast Let’s Encrypt przygotował symlinki live tylko do poszczególnych elementów – ale to oczywiście można spokojnie obejść tworząc skrypt z jedną, czy dwoma linijkami – mając na względzie fakt, że po upgradzie certyfikatu nasz skrypt także zadziałał…ale od tego jest cron
W przypadku Dovecot sprawa jest bajecznie prosta w porównaniu z Courierem i nie ma potrzeby ręcznego sklejania plików.
Szczegółowy opis zamieszczę w przyszłości w wolnej chwili.
Hacking Let’s Encrypta
Dostałem informację z zapytaniem: jak wyglada weryfikacja własności domeny, dla której tworzymy ten darmowy certyfikat? Otóż zrobiłem test próby stworzenia certyfikatu dla nazwy domenowej http://www.jakispolskibank.pl – poniżej cały zrzut.
Ogólnie tak to wygląda – skrypt tworzy plik z kluczem w katalogu, który wskażę mu jako posiadający stronkę dla domeny, tam tworzy on plik z kluczem i serwer letsencrypta próbuje go spod tego folderu (z zewnątrz) pobrać – w praktyce połączył się z prawdziwą domeną banku i tam nie znalał tego klucza i tym samym odrzucił mój request.
Czyli weryfikacja działa sprawnie – certyfikat możemy stworzyć z poziomu maszny, która ma dostęp do prawdziwej witryny internetowej.
hackserver# ./letsencrypt-auto certonly --webroot -w /home/www/www.jakispolskibank.pl -d www.jakipolskibank.pl Checking for new version... Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt certonly --webroot -w /home/www/www.jakispolskibank.pl -d www.jakispolskibank.pl Failed authorization procedure. www.mjakispolskiank.pl (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.jakispolskibank.pl/.well-known/acme-challenge/8NTZh(...)83Xdkw [x.x.x.x]: 403 IMPORTANT NOTES: - The following errors were reported by the server: Domain: www.jakispolskibank.pl Type: unauthorized Detail: Invalid response from http://www.mjakispolski.pl/.well-known/acme-challenge/8NTZh8eanLvQvYt(...)dkw[x.x.x.x]: 403 To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address.