Cum sa securizam Apache cu Let's Encrypt in Ubuntu 18.04

Blog: OS
Apache, Ubuntu, Certbot, Let's Encrypt

Introducere

Let's Encrypt este o autoritate de certificare (CA) care ofera o modalitate usoara de a obtine si instala certificate gratuite TLS / SSL, permitand criptarea HTTPS pe servere web. Acesta simplifica procesul prin furnizarea unui client software, Certbot, care incearca sa automatizeze majoritatea (daca in totalitate) pasilor necesari. In prezent, intregul proces de obtinere si instalare al unui certificat este complet automatizat atat pe Apache, cat si pe Nginx.

In acest tutorial, veti folosi Certbot pentru a obtine un certificat SSL gratuit pentru Apache pe Ubuntu 18.04 si sa configurati certificatul pentru a se reinnoi automat.

Acest tutorial va folosi un un fisier de configurare independent in locul fisierului de configurare implicit. Va recomandam sa creati noi fisiere de configurare pentru fiecare domeniu, deoarece ajuta la evitarea greselilor obisnuite si mentine fisierele implicite ca o configuratie de rezerva.

Cerinte

Pentru a putea urmari tutorialul, veti avea nevoie de:

  • Un server insotit de sistemul de operare Ubuntu 18.04, dimpreuna cu un firewall si un user root cu drepturi sudo.

  • Un domeniu inregistrat. Totusi, acest tutorial va folosi www.example.com. Puteti achizitiona un domeniu din zona noastra de inregistrari.

  • Ambele din urmatoarele inregistrari DNS vor trebui configurate pentru serverul dumneavoastra, daca exista deja, treceti peste acest pas.

    • Un record de tip A cu example.com indicand adresa IP publica a serverului.
    • Un record de tip A cu www.example.com indicand adresa IP publica a serverului.
  • Apache installed by following "Cum sa instalam apache pe Ubuntu 16.04". Va trebui sa ne asiguram ca avem deja un fisier ce detine o configuratie pentru domeniul nostru. Acest tutorial va folosi /etc/apache2/sites-available/example.com.conf ca si exemplu.

 

Step 1 — Instalarea CertBot

Primul pas in utilizarea functiei Let's Encrypt pentru a obtine un certificat SSL este sa instalati software-ul Certbot pe serverul dvs.

Certbot este in dezvoltare foarte activa, asadar pachetele Certbot furnizate de Ubuntu tind sa fie invechite. Cu toate acestea, dezvoltatorii Certbot mentin un depozit de software Ubuntu cu versiuni actualizate, deci vom folosi acea locatie.

Mai intai, sa adaugam depozitul:


 
  • sudo add-apt-repository ppa:certbot/certbot

Va trebui sa apasati pe tasta ENTER pentru a accepta. Apoi, actualizati lista de pachete pentru a prelua informatiile despre noul depozit:

 

  • sudo apt update

Si in final, instalati pachetul Certbot folosind comanda apt:


 
  • sudo apt install python-certbot-apache

Certbot este acum gata de utilizare, dar pentru ca acesta sa configureze un certificat SSL pentru Apache, trebuie sa verificam o parte din configuratia Apache.

 

Step 2 — Configurarea certificatului SSL

Certbot needs to be able to find the correct virtual host in your Apache configuration for it to automatically configure SSL. Specifically, it does this by looking for a ServerName directive that matches the domain you request a certificate for.

Certbot este nevoit sa poata gasi calea corecta catre fisierul de configurare al domeniului dumneavoastra pentru a putea automatiza procesul de configurare SSL. in mod specific, aceasta se face prin cautarea unei directive ServerName care se potriveste cu domeniul pentru care solicitati un certificat.

Daca ati urmat tutorialul de instalare VirtualHost in Apache, trebuie sa aveti un bloc VirtualHost pentru domeniul dvs. in /etc/apache2/sites-available/example.com.conf cu ServerNamedirective deja setat corespunzator.

 

Pentru a verifica, deschideti fisierul de configurare pentru domeniul dvs. folosind nano sau editorul dvs. de text preferat:


 
  • sudo nano /etc/apache2/sites-available/example.com.conf

Gasiti linia ServerName existenta. Ar trebui sa arate astfel:

 

/etc/apache2/sites-available/example.com.conf

...
ServerName example.com;
...

Daca corespunde, iesiti din editor si treceti la pasul urmator.

Daca nu, actualizati-l pentru a se potrivi. Apoi salvati fisierul, inchideti editorul si verificati sintaxa editarilor de configurare:


 
  • sudo apache2ctl configtest

Daca intampinati orice soi de eroare, redeschideti fisierul de configurare si verificati fiecare greseala de tipografie sau daca ati omis un caracter, litera, cifra, etc. Dupa ce sintaxa din fisierul dvs. de configurare este corecta, vom restarta Apache pentru a incarca noul set de configuratii.


 
  • sudo systemctl reload apache2

Certbot poate gasi acum blocul VirtualHost corect si il poate actualiza.

Step 3 — Permiterea HTTPS prin firewall

Daca aveti sistemul de protectie "ufw" activat, conform recomandarilor, va trebui sa ajustati setarile pentru a permite traficul HTTPS. Din fericire, Apache inregistreaza cateva profiluri la instalare.

Puteti vedea setarea curenta tastand:


 
  • sudo ufw status

Probabil va arata astfel, ceea ce inseamna ca numai traficul HTTP este permis serverului web:


 

Output

Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Pentru a permite, de asemenea tot traficul HTTPS, permiteti profilul complet si stergeti redundanta pentru profilul Apache:


 
  • sudo ufw allow 'Apache Full'
  • sudo ufw delete allow 'Apache'

Statusul dvs. ar trebui sa arate astfel:


 
  • sudo ufw status

 

Output

Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)

 

Acum, sa rulam Certbot si sa preluam certificate pentru domeniul nostru.

 

Step 4 — Obtaining an SSL Certificate

Certbot ofera o varietate de moduri de a obtine certificate SSL prin pluginuri. Plugin-ul Apache va avea grija sa reconfigureze Apache si sa reincarce config-ul ori de cate ori este necesar. Pentru a utiliza acest plugin, tastati urmatoarele:


 
  • sudo certbot --apache -d example.com -d www.example.com

Acest lucru ruleaza certbot cu plugin-ul --apache, folosind -d pentru a specifica numele pe care doriti ca certificatul sa fie valabil.

Daca aceasta este prima data cand executati certbot, vi se va solicita sa introduceti o adresa de e-mail si sa acceptati termenii si conditiile. Dupa ce ati facut acest lucru, certbot va lua legatura cu serverele Let's Encrypt, iar dupa aceea va trebui sa urmati cativa pasi pentru a verifica proprietatea asupra domeniului.

Daca acest lucru s-a finalizat cu succes, certbot va va intreba cum doriti sa configurati setarile pentru HTTPS:


 

Output

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Selectați alegerea dvs. apoi apăsați ENTER. Configurația va fi actualizată, iar Apache se va reîncărca pentru a obține noile setări. Certbot vă va spune că procesul a avut succes și unde sunt stocate certificatele dvs.:


 

Output

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-07-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certificatele dvs. sunt descarcate, instalate si incarcate. incercati reaccesarea site-ului web utilizand https:// si notati indicatorul de securitate al browserului. Ar trebui sa indice faptul ca site-ul este securizat corespunzator, de obicei cu o pictograma de blocare verde. Daca testati serverul folosind testul serverului SSL Labs, acesta va primi un grad A.

Sa terminam prin testarea procesului de reinnoire.

Step 5 — Verificarea reinnoirii automate de la Certbot

Certificatele Let's Encrypt sunt valabile doar pentru 90 de zile. Acest lucru este pentru a incuraja utilizatorii pentru a automatiza procesul de reinnoire al certificatelor. Pachetul certbot pe care tocmai l-am instalat are grija de asta pentru noi si creeaza un script pentru asta in /etc/cron.d. Acest script ruleaza de doua ori pe zi si va reinnoi automat orice certificat care se afla in termen de 30 de la expirare.

Pentru a testa procesul de reinnoire, puteti efectua urmatoarea operatiune:
 


 
  • sudo certbot renew --dry-run

Daca nu intampinati erori, totul este gata. Cand este necesar, Certbot va va reinnoi certificatele si va reincarca Apache pentru a prelua modificarile. Daca procesul de automatizare da gres, Let’s Encrypt va trimite un mail catre adresa specificata de catre dumneavoastra, avertizandu-va cand o sa expire certificatele dumneavoastra.

Concluzie

In acest tutorial, ati instalat clientul Let's Encrypt, ati descarcat certificate SSL pentru domeniul dumneavoastra, ati configurat Apache pentru folosirea acestor certificate si automatizarea reinnoirii certificatelor. Daca aveti intrebari suplimentare cu privire la utilizarea Certbot, documentatia acestora este un loc bun pentru a incepe.

Din aceeasi categorie

Te muti la noi?

Ai gratuit transfer fisiere, import baze de date, transfer adrese de email si configurarea acestora !