Introducere
Let’s Encrypt este o autoritate de certificare (CA) care oferă o modalitate ușoară de a obține și instala certificate gratuite TLS / SSL, permițând criptarea HTTPS pe servere web. Acesta simplifică procesul prin furnizarea unui client software, Certbot, care încearcă să automatizeze majoritatea (dacă nu în totalitate) pașilor necesari. În prezent, întregul proces de obținere și instalare al unui certificat este complet automatizat atât pe Apache, cât și pe Nginx.
În acest tutorial, veți folosi Certbot pentru a obține un certificat SSL gratuit pentru Apache pe Ubuntu 18.04 și să configurați certificatul pentru a se reînnoi automat.
Acest tutorial va folosi un fișier de configurare independent în locul fișierului de configurare implicit. Vă recomandăm să creați noi fișiere de configurare pentru fiecare domeniu, deoarece ajută la evitarea greșelilor obișnuite și menține fișierele implicite ca o configurație de rezervă.
Cerințe
Pentru a putea urmări tutorialul, veți avea nevoie de:
- Un server însoțit de sistemul de operare Ubuntu 18.04, împreună cu un firewall și un utilizator root cu drepturi sudo.
- Un domeniu înregistrat. Totuși, acest tutorial va folosi www.example.com. Puteți achiziționa un domeniu din zona noastră de înregistrări.
- Ambele din următoarele înregistrări DNS vor trebui configurate pentru serverul dumneavoastră, dacă există deja, treceți peste acest pas.
- Un record de tip A cu
example.com
indicând adresa IP publică a serverului. - Un record de tip A cu
www.example.com
indicând adresa IP publică a serverului.
- Un record de tip A cu
- Apache instalat urmând Cum să instalăm apache pe Ubuntu 16.04„. Va trebui să ne asigurăm că avem deja un fișier ce deține o configurație pentru domeniul nostru. Acest tutorial va folosi
/etc/apache2/sites-available/example.com.conf
ca și exemplu.
Step 1 — Instalarea CertBot
Primul pas în utilizarea funcției Let’s Encrypt pentru a obține un certificat SSL este să instalați software-ul Certbot pe serverul dvs.
Certbot este în dezvoltare foarte activă, așadar pachetele Certbot furnizate de Ubuntu tind să fie învechite. Cu toate acestea, dezvoltatorii Certbot mențin un depozit de software Ubuntu cu versiuni actualizate, deci vom folosi acea locație.
Mai întâi, să adăugăm depozitul:
sudo add-apt-repository ppa:certbot/certbot
Va trebui să apăsați pe tasta ENTER pentru a accepta. Apoi, actualizați lista de pachete pentru a prelua informațiile despre noul depozit:
sudo apt update
Și în final, instalați pachetul Certbot folosind comanda apt:
sudo apt install python-certbot-apache
Certbot este acum gata de utilizare, dar pentru ca acesta să configureze un certificat SSL pentru Apache, trebuie să verificăm o parte din configurația 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 să poată găsi calea corectă către fișierul de configurare al domeniului dumneavoastră pentru a putea automatiza procesul de configurare SSL. În mod specific, aceasta se face prin căutarea unei directive ServerName care se potrivește cu domeniul pentru care solicitați un certificat.
Dacă ați urmat tutorialul de instalare VirtualHost în Apache, trebuie să aveți un bloc VirtualHost pentru domeniul dvs. în /etc/apache2/sites-available/example.com.conf cu ServerNamedirective deja setat corespunzător.
Pentru a verifica, deschideți fișierul de configurare pentru domeniul dvs. folosind nano sau editorul dvs. de text preferat:
sudo nano /etc/apache2/sites-available/example.com.conf
Găsiți linia ServerName existentă. Ar trebui să arate astfel:
/etc/apache2/sites-available/example.com.conf
... ServerName example.com; ...
Dacă corespunde, ieșiți din editor și treceți la pasul următor.
Dacă nu, actualizați-l pentru a se potrivi. Apoi salvați fișierul, închideți editorul și verificați sintaxa editărilor de configurare:
sudo apache2ctl configtest
Dacă întâmpinați orice soi de eroare, redeschideți fișierul de configurare și verificați fiecare greșeală de tipografie sau dacă ați omis un caracter, literă, cifră, etc. După ce sintaxa din fișierul dvs. de configurare este corectă, vom restarta Apache pentru a încărca noul set de configurații.
sudo systemctl reload apache2
Certbot poate găsi acum blocul VirtualHost corect și îl poate actualiza.
Step 3 — Permiterea HTTPS prin firewall
Dacă aveți sistemul de protecție „ufw” activat, conform recomandărilor, va trebui să ajustați setările pentru a permite traficul HTTPS. Din fericire, Apache înregistrează câteva profile la instalare.
Puteți vedea setarea curentă tastând:
sudo ufw status
Probabil va arăta astfel, ceea ce înseamnă că 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, permiteți profilul complet și ștergeți redundanța pentru profilul Apache:
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
Statusul dvs. ar trebui să 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, să rulăm Certbot și să preluăm certificate pentru domeniul nostru.
Step 4 — Obtaining an SSL Certificate
Certbot oferă o varietate de moduri de a obține certificate SSL prin pluginuri. Plugin-ul Apache va avea grijă să reconfigureze Apache și să reîncarce config-ul ori de câte ori este necesar. Pentru a utiliza acest plugin, tastați următoarele:
sudo certbot --apache -d example.com -d www.example.com
Acest lucru rulează certbot cu plugin-ul –apache, folosind -d pentru a specifica numele pe care doriți ca certificatul să fie valabil..
Dacă aceasta este prima dată când executați certbot, vi se va solicita să introduceți o adresă de e-mail și să acceptați termenii și condițiile. După ce ați făcut acest lucru, certbot
va lua legătura cu serverele Let’s Encrypt, iar după aceea va trebui să urmați câțiva pași pentru a verifica proprietatea asupra domeniului.
Dacă acest lucru s-a finalizat cu succes, certbot vă va întreba cum doriți să configurați setările 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 descărcate, instalate și încărcate. Încercați reaccesarea site-ului web utilizând https:// și notați indicatorul de securitate al browserului. Ar trebui să indice faptul că site-ul este securizat corespunzător, de obicei cu o pictogramă de blocare verde. Dacă testați serverul folosind testul serverului SSL Labs, acesta va primi un grad A.
Să terminăm prin testarea procesului de reînnoire.
Step 5 — Verificarea reînnoirii automate de la Certbot
Certificatele Let’s Encrypt sunt valabile doar pentru 90 de zile. Acest lucru este pentru a încuraja utilizatorii pentru a automatiza procesul de reînnoire al certificatelor. Pachetul certbot pe care tocmai l-am instalat are grijă de asta pentru noi și creează un script pentru asta în /etc/cron.d
. Acest script rulează de două ori pe zi și va reînnoi automat orice certificat care se află în termen de 30 de la expirare.
Pentru a testa procesul de reînnoire, puteți efectua următoarea operațiune:
sudo certbot renew --dry-run
Dacă nu întâmpinați erori, totul este gata. Când este necesar, Certbot va vă reînnoi certificatele și va reîncărca Apache pentru a prelua modificările. Dacă procesul de automatizare dă greș, Let’s Encrypt va trimite un mail către adresa specificată de către dumneavoastră, avertizându-vă când o să expire certificatele dumneavoastră.
Concluzie
În acest tutorial, ați instalat clientul Let’s Encrypt, ați descărcat certificate SSL pentru domeniul dumneavoastră, ați configurat Apache pentru folosirea acestor certificate și automatizarea reînnoirii certificatelor. Dacă aveți întrebări suplimentare cu privire la utilizarea Certbot, documentația acestora este un loc bun pentru a începe.