Android

Protejați apache cu ajutorul criptării centos 8

#29 - Package Management (Yum/DNF) on Linux CentOS 8

#29 - Package Management (Yum/DNF) on Linux CentOS 8

Cuprins:

Anonim

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.com Apache 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 /etc/httpd/conf.d/ssl-params.conf

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 ssl