#29 - Package Management (Yum/DNF) on Linux CentOS 8
Cuprins:
- Cerințe preliminare
- Instalați Certbot
- Generați grupul puternic Dh (Diffie-Hellman)
- Obținerea unui certificat SSL Encrypt
- Reînnoire automată Let's Encrypt SSL certificate
- Concluzie
Let's Encrypt este o autoritate de certificare gratuită, automatizată și deschisă, dezvoltată de Grupul de cercetare în domeniul securității internetului (ISRG), care furnizează certificate SSL gratuite.
Certificatele emise de Let's Encrypt sunt de încredere de către toate browserele majore și sunt valabile timp de 90 de zile de la data emiterii.
Acest tutorial explică cum se instalează un certificat SSL gratuit Encrypt SSL pe CentOS 8 care rulează Apache ca server web. Vom folosi instrumentul certbot pentru a obține și reînnoi certificatele.
Cerințe preliminare
Asigurați-vă că sunt îndeplinite următoarele cerințe înainte de a continua:
- Puneți un nume de domeniu îndreptat către IP-ul serverului dvs. public. Vom folosi
example.comApache este instalat și rulează pe serverul dvs. cu o gazdă virtuală configurată pentru domeniul dvs..Porturile 80 și 443 sunt deschise în firewallul dvs.
Instalați următoarele pachete care sunt necesare pentru un server web criptat SSL:
sudo dnf install mod_ssl openssl
Când pachetul mod_ssl este instalat, ar trebui să creeze o cheie și fișiere de certificat auto-semnate pentru localhost. Dacă fișierele nu sunt create automat, le puteți crea folosind comanda
openssl
:
sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \
-out /etc/pki/tls/certs/localhost.crt \
-keyout /etc/pki/tls/private/localhost.key
Instalați Certbot
Certbot este un instrument gratuit pentru linia de comandă care simplifică procesul de obținere și reînnoire a Criptării certificatelor SSL de la și de auto-activare HTTPS pe serverul dvs.
Pachetul certbot nu este inclus în depozitele standard CentOS 8, dar poate fi descărcat de pe site-ul web al vânzătorului.
Rulați următoarea comandă
wget
ca utilizator root sau sudo pentru a descărca scriptul certbot în directorul
/usr/local/bin
:
sudo wget -P /usr/local/bin
După ce descărcarea este completă, faceți fișierul executabil:
sudo chmod +x /usr/local/bin/certbot-auto
Generați grupul puternic Dh (Diffie-Hellman)
Schimbul de chei Diffie – Hellman (DH) este o metodă de a schimba în siguranță cheile criptografice pe un canal de comunicare nesecurizat. Generați un nou set de parametri DH 2048 biți pentru a consolida securitatea:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Puteți modifica dimensiunea până la 4096 de biți, dar generația poate dura mai mult de 30 de minute în funcție de entropia sistemului.
Obținerea unui certificat SSL Encrypt
Pentru a obține un certificat SSL pentru domeniu, vom folosi pluginul Webroot care funcționează prin crearea unui fișier temporar pentru validarea domeniului solicitat în directorul
${webroot-path}/.well-known/acme-challenge
. Serverul Let's Encrypt face solicitări HTTP la fișierul temporar pentru a valida dacă domeniul solicitat se rezolvă la serverul unde rulează certificbot.
Pentru a face configurația mai simplă, vom face o hartă a tuturor cererilor HTTP pentru
.well-known/acme-challenge
către un singur director,
/var/lib/letsencrypt
.
Executați următoarele comenzi pentru a crea directorul și a-l face scris pentru serverul Apache.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Pentru a evita duplicarea codului și a face configurația mai sustenabilă, creați următoarele două fragmente de configurare:
/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Snippet-ul de mai sus folosește cipurile recomandate de Cipherli.st. Permite OCSP Stapling, HTTP Strict Transport Security (HSTS), cheia Dh și aplică câteva anteturi HTTP centrate pe securitate.
Reîncărcați configurația Apache pentru ca modificările să aibă efect:
sudo systemctl reload
Acum, puteți rula scriptul certbot cu plugin-ul webroot și puteți prelua fișierele de certificat SSL:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
La succes, certbot va imprima următorul mesaj:
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 2020-01-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto 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:
Acum că totul este configurat, modificați configurația gazdei virtuale a domeniului după cum urmează:
/etc/httpd/conf.d/example.com.conf
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
Configurația de mai sus constrânge HTTPS și redirecționează de la www la versiunea non-www. De asemenea, activează HTTP / 2, ceea ce va face site-urile dvs. mai rapide și mai robuste. Nu vă rugăm să reglați configurația în funcție de nevoile dvs.
Reporniți serviciul Apache:
sudo systemctl restart
Acum puteți deschide site-ul dvs. utilizând
https://
și veți observa o pictogramă de blocare verde.

Reînnoire automată Let's Encrypt SSL certificate
Certificatele Let's Encrypt sunt valabile 90 de zile. Pentru a reînnoi automat certificatele înainte de a expira, vom crea un cronjob care va rula de două ori pe zi și va reînnoi automat orice certificat cu 30 de zile înainte de expirarea acestuia.
Rulați următoarea comandă pentru a crea un nou cronjob care va reînnoi certificatul și va reporni Apache:
echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null
Pentru a testa procesul de reînnoire, utilizați comanda certbot urmată de comutatorul
--dry-run
:
sudo /usr/local/bin/certbot-auto renew --dry-run
Dacă nu există erori, înseamnă că procesul de reînnoire a avut succes.
Concluzie
În acest tutorial, am vorbit despre cum să utilizăm certificatul de clienți Let's Encrypt pe CentOS pentru a obține certificate SSL pentru domeniile dvs. De asemenea, v-ați arătat cum puteți configura Apache pentru a utiliza certificatele și a configura un cronjob pentru reînnoirea automată a certificatelor.
Pentru a afla mai multe despre scriptul Certbot, accesați documentația Certbot.
apache centos hai să criptăm certbot sslProtejați apache cu ajutorul criptării centos 7
În acest tutorial, vom acoperi pașii necesari pentru instalarea unui certificat gratuit Let's Encrypt SSL pe un server CentOS 7 care rulează Apache ca server web.
Protejați apache cu ajutorul criptării pe Debian 9
Acest tutorial vă va ghida în procesul de obținere a unei versiuni gratuite Let's Encrypt folosind instrumentul certbot de pe Debian 9. Vom arăta, de asemenea, cum să configurați Apache pentru a utiliza noul certificat SSL și pentru a activa HTTP / 2
Protejați apache cu ajutorul criptării pe ubuntu 18.04
În acest tutorial, vom oferi instrucțiuni pas cu pas despre cum să vă securizați Apache cu Let's Encrypt folosind instrumentul certbot de pe Ubuntu 18.04.







