androide

Apache sicuro con crittografiamo su centos 8

Cheap Bike Vs. Super Bike | What's The Difference?

Cheap Bike Vs. Super Bike | What's The Difference?

Sommario:

Anonim

Let's Encrypt è un'autorità di certificazione libera, automatizzata e aperta sviluppata da Internet Security Research Group (ISRG) che fornisce certificati SSL gratuiti.

I certificati emessi da Let's Encrypt sono considerati affidabili da tutti i principali browser e sono validi per 90 giorni dalla data di emissione.

Questo tutorial spiega come installare un certificato SSL Let's Encrypt gratuito su CentOS 8 che esegue Apache come server web. Useremo lo strumento certbot per ottenere e rinnovare i certificati.

Prerequisiti

Assicurarsi che siano soddisfatti i seguenti prerequisiti prima di continuare:

  • Avere un nome di dominio che punta all'IP del server pubblico. Useremo example.com Apache è installato e in esecuzione sul tuo server con un host virtuale configurato per il tuo dominio. Le porte 80 e 443 sono aperte nel tuo firewall.

Installare i seguenti pacchetti richiesti per un server Web crittografato SSL:

sudo dnf install mod_ssl openssl

Quando il pacchetto mod_ssl è installato, dovrebbe creare una chiave autofirmata e file di certificato per l'host locale. Se i file non vengono creati automaticamente, è possibile crearli usando il comando 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

Installa Certbot

Certbot è uno strumento da riga di comando gratuito che semplifica il processo per ottenere e rinnovare Let's Encrypt certificati SSL e abilitare automaticamente HTTPS sul tuo server.

Il pacchetto certbot non è incluso nei repository standard di CentOS 8, ma può essere scaricato dal sito Web del fornitore.

Eseguire il seguente comando wget come utente root o sudo per scaricare lo script certbot nella /usr/local/bin :

sudo wget -P /usr/local/bin

Una volta completato il download, rendere eseguibile il file:

sudo chmod +x /usr/local/bin/certbot-auto

Genera gruppo Strong Dh (Diffie-Hellman)

Lo scambio di chiavi Diffie-Hellman (DH) è un metodo di scambio sicuro di chiavi crittografiche su un canale di comunicazione non protetto. Generare un nuovo set di parametri DH a 2048 bit per rafforzare la sicurezza:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

È possibile modificare la dimensione fino a 4096 bit, ma la generazione può richiedere più di 30 minuti a seconda dell'entropia del sistema.

Ottenere un certificato SSL Let's Encrypt

Per ottenere un certificato SSL per il dominio utilizzeremo il plug-in Webroot che funziona creando un file temporaneo per convalidare il dominio richiesto nella ${webroot-path}/.well-known/acme-challenge . Il server Let's Encrypt invia richieste HTTP al file temporaneo per convalidare la risoluzione del dominio richiesto sul server su cui viene eseguito certbot.

Per rendere l'installazione più semplice andremo a mappare tutte le richieste HTTP per .well-known/acme-challenge a una singola directory, /var/lib/letsencrypt .

Eseguire i comandi seguenti per creare la directory e renderla scrivibile per il server Apache.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp apache /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Per evitare la duplicazione del codice e rendere più gestibile la configurazione, creare i seguenti due frammenti di configurazione:

/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"

Lo snippet sopra sta usando le cippatrici consigliate da Cipherli.st. Consente la pinzatura OCSP, la sicurezza del trasporto rigorosa HTTP (HSTS), la chiave Dh e applica poche intestazioni HTTP incentrate sulla sicurezza.

Ricarica la configurazione di Apache per rendere effettive le modifiche:

sudo systemctl reload

Ora puoi eseguire lo script certbot con il plugin webroot e recuperare i file del certificato 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

In caso di successo, certbot stamperà il seguente messaggio:

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:

Ora che tutto è impostato, modifica la configurazione dell'host virtuale del tuo dominio come segue:

/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

La configurazione sopra sta forzando HTTPS e reindirizzando dalla versione www alla versione non www. Abilita anche HTTP / 2, che renderà i tuoi siti più veloci e più robusti. Sentiti libero di adattare la configurazione in base alle tue esigenze.

Riavvia il servizio Apache:

sudo systemctl restart

Ora puoi aprire il tuo sito Web utilizzando https:// e noterai un'icona di blocco verde.

Rinnovo automatico Let's Encrypt SSL certificate

I certificati Let's Encrypt sono validi per 90 giorni. Per rinnovare automaticamente i certificati prima che scadano, creeremo un cronjob che verrà eseguito due volte al giorno e rinnoverà automaticamente qualsiasi certificato 30 giorni prima della sua scadenza.

Esegui il comando seguente per creare un nuovo cronjob che rinnoverà il certificato e riavvierà 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

Per testare il processo di rinnovo, utilizzare il comando certbot seguito dall'opzione --dry-run :

sudo /usr/local/bin/certbot-auto renew --dry-run

Se non ci sono errori, significa che il processo di rinnovo è andato a buon fine.

Conclusione

In questo tutorial, abbiamo parlato di come utilizzare il certbot client Let's Encrypt su CentOS per ottenere certificati SSL per i tuoi domini. Hai anche mostrato come configurare Apache per usare i certificati e impostare un cronjob per il rinnovo automatico dei certificati.

Per ulteriori informazioni sullo script Certbot, visitare la documentazione di Certbot.

apache centos crittografiamo certbot ssl