Let's Encrypt

Let's Encrypt este o autoritate globală de certificare (CA). Pune la îndemâna oamenilor și organizațiilor din întreaga lume să obțină, să reînnoiască și să gestioneze certificate SSL / TLS. Certificatele celor de la Let's Encrypt pot fi utilizate de site-uri web pentru a permite conexiuni HTTPS securizate.

Instalare

Din git

Pentru utilizarea serviciului este de preferat a se folosi clientul Certbot.
În Debian există pachetul certboot ce poate fi instalat, dar se poate și ultima variantă din git:
cd /opt
daca nu este instalat pachetul git îl instalăm:
apt install git
git clone https://github.com/certbot/certbot /opt/certbot

dupa clonare intrăm în directorul certboot:
cd certboot
unde lansăm comanda pentru obținerea certificatelor:
./letsencrypt-auto certonly --standalone -d yo8tff.ro -d www.yo8tff.ro -d yo8tff.hamradio.ro -d florintanasa.sytes.net

Atenție: va trebui să ne înregistrăm după lansarea comenzii de mai sus și să fim de acord cu licența.

dacă răspunsul este ca cel de mai jos:

va trebui să oprim serviciul apache sau oricare altă aplicație ce ține ocupat portul 80:
systemctl stop apache2
și sa reluam comanda de obținere a certificatului:

dacă se obține un ecran ca cel de mai sus atunci comanda a fost rulată cu succes și avem cheile în directorul live/etc/letsencrypt/live/nume_domeniu:
ls /etc/letsencrypt/live/yo8tff.ro/

Cheile de mai sus pot fi folosite la criptarea comunicațiilor pentru serviciile: apache, tomcat, etc.

Atenție: Certificarea expiră în 90 de zile

Putem reactualiza cheile folosind comanda:
/opt/certbot/letsencrypt-auto renew

Pentru rularea automată a comenzii, de exemplu în ziua de 01 a fiecărei luni, putem folosi serviciul crontab:
crontab -e

0 0 1 * * letsencrypt-auto renew

Atenție la variabila PATH, trebuie să includă /opt/certbot

putem vedea comenzile ce urmează executate de crontab cu:
crontab -l

Util un "guru" pentru crontab.

Din pachetele distribuției în Ubuntu

Instalrea este mai lesne pentru începători.
Pentru început face update și upgrade.

apt update && apt upgrade

După care vom instala pachetul certbot și python3-certbot-apache, ultimul fiind necesar pentru a realiza în mod automat update cheilor la autoritate.

apt install certbot python3-certbot-apache

Pentru a obține și configura automat SSL pentru serverul web Apache, Certbot trebuie să găsească gazda virtuală corectă în fișierele de configurare Apache (/etc/apache2/sites-available/domeniu.conf). Numele de domeniu al serverului vor fi preluate de la ServerName (ServerName domeniu) și ServerAlias (ServerAlias www.domeniu) definite în cadrul gazdei virtuale de configurare (/etc/apache2/sites-available/domeniu.conf).

Verificăm dacă fisierul de configurare a hostului sau virtual hosturilor este configurat corect:

apache2ctl configtest

Atenție înainte de rula solcitarea cheilor se va verifica dacă porturile 80 și 443 sunt deschise, din firewall local sau de oriunde se află el și dacă porturile sunt înaintate în cazul în care ne aflâm în spatele unui NAT (la unele routere la pagina - Serverul virtual/redirecţionarea porturilor).

Rulăm solicitarea cheilor:

certbot --apache

După ce introducem un email valid și răspundem că suntem de acord cu termenii de la Let's Encrypt și dacă ne abonăm cu emailul la Electronic Frontier Foundation, aici se poate răspunde cu N (Nu) dar eu am răspuns cu da, va trebui să indicăm la care din nume ale hostului (cele scrise la ServerName și ServerAlias) dorim activarea cheilor și conexiunilor ssl.

Atenție - Numele de la ServerName și ServerAlias trebuiesc înregistrate la un serviciu DNS!

Deoarece cheile sunt valide numai 90 de zile, din motive de siguranță, va trebui să verficăm dacă servicul de actualizare a cheilor, care verifică de două ori pe zi dacă sunt chei a călor valabilitate este mai mica de 30 de zile, este pornit:

systemctl status certbot.timer

Vom verifica (simulând o actualizare) dacă servicul automat de actualizare este funcțional:

certbot renew --dry-run

root@srv:~# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/domeniu.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for domeniu

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded: 
  /etc/letsencrypt/live/domeniu/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Astfel de acum inainte vom avea cheile actualizate și la termen :)