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.

  • tjamrozik

    Mam problem (nie pierwszy ;))
    Posiadam konto hostingowe w linuxpl.com, do czego dokupiłem serwer VPS i tam przeniosłem sklep na prestashop (konfiguracja Twojego autorstwa). W panelu admina konta hostingowego pozmieniałem wpisy “ftp” “nazwadomeny.pl.” i “www” na nowy serwer. Teoretycznie wszystko działa, ale z zainstalowaniem certyfikatu jest problem. Zwraca takie coś:

    IMPORTANT NOTES:
    – The following errors were reported by the server:

    Domain: nazwadomeny.pl
    Type: unauthorized
    Detail: Invalid response from
    http://nazwadomeny.pl/.well-known/acme-challenge/oBoqngMV4kFapQeYZIfQ436mYAbabqwPH5vqgKiwYUw:

    403 Forbidden

    403 Forbidden

    Domain: http://www.nazwadomeny.pl
    Type: unauthorized
    Detail: Invalid response from
    http://www.nazwadomeny.pl/.well-known/acme-challenge/LYhTkKq4uzOcByzXqx7X5MLTo2ojQBGtErfu4oYULxA:

    403 Forbidden

    403 Forbidden

    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.

    Czy to DNS jest faktycznie problemem?

  • Sławomir Prasek

    Co do problemami ze starszymi systemami to napisane jest, że przez okres przejściowy (rozpowszechnienie certyfikatu głównego), używany będzie cerfyfikat podpisany przez partnera (Identrust), więc certyfikaty Letsencrypt powinny być akceptowane jako prawidłowe.

  • Nie używam niestety nigdzie Apache2, ale wem że jest to chyba nawet zautomatyzowane przez autrów Let’s Encrypta

  • Harrybeckham Bouman

    pokarzesz jak to zrobić dla apache2 ??

  • Pingback: Wordpress na Ubuntu 16.04 (nginx, PHP7, FTP) z SSL | linuxiarz.pl()