androide

Apache sicuro con crittografiamo su centos 7

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). I certificati emessi da Let's Encrypt sono validi per 90 giorni dalla data di emissione e sono considerati affidabili da tutti i principali browser oggi.

In questo tutorial, tratteremo i passaggi necessari per installare un certificato SSL Let's Encrypt gratuito su un server CentOS 7 che esegue Apache come server Web. Useremo l'utilità certbot per ottenere e rinnovare i certificati Let's Encrypt.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:

  • Avere un nome di dominio che punta all'IP del server pubblico. Useremo example.com Apache è installato e in esecuzione sul tuo server. Avere host virtuale Apache 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:

yum install mod_ssl openssl

Installa Certbot

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

Il pacchetto certbot è installabile da EPEL. Se il repository EPEL non è installato sul sistema, è possibile installarlo utilizzando il comando seguente:

sudo yum install epel-release

Una volta abilitato il repository EPEL, installare il pacchetto certbot digitando:

sudo yum install certbot

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 in tal caso, la generazione potrebbe 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 nostro 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 più semplice .well-known/acme-challenge tutte le richieste HTTP per .well-known/acme-challenge su una singola directory, /var/lib/letsencrypt .

Esegui i seguenti comandi 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, 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:AES256+EECDH:AES256+EDH 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

Lo snippet sopra sta usando i cippatori raccomandati da Cipherli.st, abilita la pinzatura OCSP, HTTP Strict Transport Security (HSTS) e applica poche intestazioni HTTP incentrate sulla sicurezza.

Ricarica la configurazione di Apache per rendere effettive le modifiche:

sudo systemctl reload

Ora, possiamo eseguire lo strumento Certbot con il plugin webroot e ottenere i file del certificato SSL digitando:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Se il certificato SSL viene ottenuto correttamente, 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 2018-12-07. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

CentOS 7 viene fornito con Apache versione 2.4.6, che non include la direttiva SSLOpenSSLConfCmd . Questa direttiva è disponibile solo su Apache 2.4.8 in seguito e viene utilizzata per la configurazione di parametri OpenSSL come lo scambio di chiavi Diffie-Hellman (DH).

Dovremo creare un nuovo file combinato usando il certificato SSL Let's Encrypt e il file DH generato. Per fare ciò, digitare:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

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 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration

Con la configurazione sopra, stiamo forzando HTTPS e reindirizzando dalla versione www alla versione non www. Sentiti libero di adattare la configurazione in base alle tue esigenze.

Riavvia il servizio Apache per rendere effettive le modifiche:

sudo systemctl restart

Ora puoi aprire il tuo sito Web usando https:// e noterai un'icona a forma di lucchetto 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 rinnoveremo automaticamente qualsiasi certificato 30 giorni prima della sua scadenza.

Esegui il comando crontab per creare un nuovo cronjob che rinnoverà il certificato, creerà un nuovo file combinato incluso il tasto DH e riavvierà apache:

sudo crontab -e

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload

Salva e chiudi il file.

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

sudo certbot renew --dry-run

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

Conclusione

In questa esercitazione, hai utilizzato il client certbot Let's Encrypt per scaricare i certificati SSL per il tuo dominio. Hai anche creato frammenti di Apache per evitare la duplicazione del codice e configurato Apache per l'utilizzo dei certificati. Alla fine del tutorial, hai impostato un cronjob per il rinnovo automatico del certificato.

apache centos crittografiamo certbot ssl

Questo post fa parte dello Stack LAMP di installazione sulla serie CentOS 7.

Altri post di questa serie:

• Come installare Apache su CentOS 7 • Installare MySQL su CentOS 7 • Come configurare host virtuali Apache su CentOS 7 • Apache sicuro con Let's Encrypt su CentOS 7