Let’s Encrypt – darmowy certyfikat SSL z kłódką

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.

Lets-Encrypt-300x193.jpg

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

https-secure

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