androide

Apache sicuro con crittografiamo su Ubuntu 18.04

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 creata da Internet Security Research Group (ISRG). Fornisce certificati SSL gratuiti tramite un processo completamente automatizzato progettato per eliminare la creazione, la convalida, l'installazione e il rinnovo manuali dei certificati.

I certificati emessi da Let's Encrypt sono oggi considerati affidabili da tutti i principali browser.

In questo tutorial, forniremo istruzioni dettagliate su come proteggere Apache con Let's Encrypt usando lo strumento certbot su Ubuntu 18.04.

Prerequisiti

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

  • Nome di dominio che punta all'IP del tuo server pubblico. Useremo example.com . example.com Apache installato con un host virtuale apache per il tuo dominio.

Installa Certbot

Certbot è uno strumento completo e facile da usare in grado di automatizzare le attività per ottenere e rinnovare i certificati SSL Let's Encrypt e configurare i server web. Il pacchetto certbot è incluso nei repository Ubuntu predefiniti.

Aggiorna l'elenco dei pacchetti e installa il pacchetto certbot:

sudo apt update sudo apt 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. Genereremo un nuovo set di parametri DH a 2048 bit per rafforzare la sicurezza:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Se lo desideri, puoi modificare le dimensioni 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 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 in una singola directory, /var/lib/letsencrypt .

I seguenti comandi creeranno la directory e la renderanno scrivibile per il server Apache.

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

Per evitare la duplicazione del codice, creare i seguenti due frammenti di configurazione:

/etc/apache2/conf-available/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/apache2/conf-available/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 SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

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.

Prima di abilitare i file di configurazione, assicurarsi che sia mod_ssl che mod_headers siano abilitati emettendo:

sudo a2enmod ssl sudo a2enmod headers

Quindi, abilitare i file di configurazione SSL eseguendo i seguenti comandi:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Abilita il modulo HTTP / 2, che renderà i tuoi siti più veloci e più robusti:

sudo a2enmod

Ricarica la configurazione di Apache per rendere effettive le modifiche:

sudo systemctl reload apache2

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-10-28. 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:

Ora che hai i file del certificato, modifica la configurazione dell'host virtuale del tuo dominio come segue:

/etc/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/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

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.

Ricarica il servizio Apache per rendere effettive le modifiche:

sudo systemctl reload apache2

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 della scadenza, il pacchetto certbot crea un cronjob che viene eseguito due volte al giorno e rinnova automaticamente qualsiasi certificato 30 giorni prima della scadenza.

Una volta rinnovato il certificato, dobbiamo anche ricaricare il servizio Apache. Aggiungi --renew-hook "systemctl reload apache2" al file /etc/cron.d/certbot modo che appaia come segue:

/etc/cron.d/certbot

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

Per testare il processo di rinnovo, è possibile utilizzare l' --dry-run certbot --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 ubuntu crittografiamo certbot ssl

Questo post fa parte della serie how-to-install-lamp-stack-on-ubuntu-18-04.

Altri post di questa serie:

• Come installare Apache su Ubuntu 18.04 • Come configurare gli host virtuali Apache su Ubuntu 18.04 • Apache sicuro con Let's Encrypt su Ubuntu 18.04 • Come installare MySQL su Ubuntu 18.04 • Come installare PHP su Ubuntu 18.04