Certyfikat SSL z Let’s Encrypt i autoodnawianie!

LetsEncrypt-Free-SSL-for-All

Co to jest Let’s Encrypt?

Każdy kto jest zainteresowany, używa bądź używał szyfrowanego połączenia dla swojej strony/aplikacji – ten wie co to jest, dla mniej zorientownych – jest to nowość na rynku, Let’s Encrypt zostałstworzony, by dawać użytkownikowi darmowy SSL dla 10 certyfikatów SSL w obrębie jednej domeny za DARMO na 3 miesiące.

Dzięki dostarczeniu przez autorów projektu, odnowienie certyfikatów można zautomatyzować, przez co w zasadzie można zapomnieć o co-3-miesięcznym ręcznym odnawianiu.

Kto za to płaci ?

Na tę chwilę (17.04.2016) głównymi sponsorami są:

lets-sponsor

Jak to się ma do certyfikatów wystawianych przez firmy typu AlphaSSL, COMODO etc. ?

W sumie to sam certyfikt niczym się nie równi. Jest on zweryfikowany, jest on zaufany nie mniej jednak – na starszych systemach operacyjnych, bądź w starszych przeglądarkach internetowych moga wystąpić problemy z weryfikacją, ze względu na to że wydawca jest “świeży”.

Osobiście mni to nie dotknęło, jednak na systemach typu Windows XP bądz sarszych dystrybucjach ze starszymi pakietami “ca-cert” mogą wystąpić kłopoty.

Do czego można to zastosować ?

Do wszystkich aplikacji, serwerów WWW (testowałem na nginx, Apache 2.x, oraz lighttpd), generowane pliki certyfikatu, klucza wydawcy są standardowe.

Jeśli:

  • pobierasz i przetwarzasz dane osobowe,
  • prowadzisz sprzedaż w Internecie,
  • publikujesz informacje wymagające uwiarygodnienia,
  • prowadzisz aktywną działalność w Internecie,
  • przekazujesz swoim współpracownikom i partnerom poufne informacje za pośrednictwem Internetu.

Certyfikat jest wręcz zalecany.

Jak to zainstalować ?

Do instalacji potrzebujesz pakiet “git” oraz kilka bibliotek “python’owych”.

Pokazę jak zainstalować SSL z Let’s Encrypta na systemie Debian 8 / Debian 7 / Ubuntu 14.04 LTS i serwerze WWW nginx 1.8.1 / 1.9.14

1. Paczka GIT:

apt-get update
apt-get install git -y

2. Najnowsze źródła narzędzi Let’s Encrypt z GIT:

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

3. Generowanie certyfikatu dla istniejącej witryny www

sh /root/letsencrypt/letsencrypt-auto certonly --webroot --webroot-path /var/www --domains strona.pl,www.strona.pl --agree-tos --email admin@strona.pl

Ścieżka gdzie “jest” witryna:

--webroot --webroot-path /var/www

Domena i subdomena dla której ma być SSL wygenerowany:

--domains strona.pl,www.strona.pl

E-mail administratora

--email admin@strona.pl

4. Odnowienie certyfikatu SSL:

(sudo crontab -u root -l; echo "0 0 1 * * sh /root/letsencrypt/letsencrypt-auto renew >> /dev/null && service nginx restart >> /dev/null") | crontab -u root -

Powyższe polecenie doda do zadań “cron” i wykona go co miesiąc.

5. Konfiguracja serwera WWW:

server {
	listen 443 ssl;
	server_name			strona.pl www.strona.pl;

	ssl				on;
	ssl_certificate			/etc/letsencrypt/live/strona.pl/fullchain.pem;
	ssl_certificate_key		/etc/letsencrypt/live/strona.pl/privkey.pem;
	ssl_trusted_certificate		/etc/letsencrypt/live/strona.pl/chain.pem;
 
	ssl_session_timeout		1d;
	ssl_session_cache		shared:SSL:10m;
	ssl_session_tickets		off;
	ssl_stapling			on;
	ssl_stapling_verify		on;
	resolver			8.8.8.8 8.8.4.4 valid=86400;
	resolver_timeout		10;
	ssl_prefer_server_ciphers	on;
	ssl_protocols			TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers			"ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK"; 

### DALSZA CZĘŚĆ KONFIGURACJI ###	
}

Oczywiście strona.pl zamień na swoj katalog o nazwie twojej witryny www.