androide

Apache sicuro con crittografiamo su debian 9

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 validi per 90 giorni dalla data di emissione e sono considerati affidabili da tutti i principali browser oggi.

Questo tutorial ti guiderà attraverso il processo per ottenere un Let's Encrypt gratuito usando lo strumento certbot su Debian 9. Mostreremo anche come configurare Apache per usare il nuovo certificato SSL e abilitare HTTP / 2.

Prerequisiti

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

  • Accesso come utente con privilegi sudo. Avere un nome di dominio che punta all'IP del server pubblico del server. Useremo example.com .Apache installato. Un host virtuale apache per il tuo dominio. Puoi seguire queste istruzioni per i dettagli su come crearne uno.

Installa Certbot

Certbot è uno strumento completo e facile da usare che può automatizzare le attività per ottenere e rinnovare i certificati SSL Let's Encrypt. Il pacchetto certbot è incluso nei repository Debian predefiniti.

Aggiorna l'elenco dei pacchetti e installa il pacchetto certbot usando i seguenti comandi:

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.

Per generare un nuovo set di parametri DH 2048 bit eseguiti:

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 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 in una singola directory, /var/lib/letsencrypt .

I seguenti comandi creano la directory e la rendono 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

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

sudo a2enmod

Abilitare i file di configurazione SSL eseguendo i seguenti comandi:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Ricarica la configurazione di Apache per rendere effettive le modifiche:

sudo systemctl reload apache2

Utilizzare lo strumento Certbot con il plugin webroot per ottenere i file del certificato SSL:

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: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2019-01-17. 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 lose your account credentials, you can recover through e-mails sent to [email protected]. - 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 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

Apri 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, il pacchetto certbot crea un cronjob che viene eseguito due volte al giorno e rinnoverà 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 sia simile al seguente:

/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, 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 ottenere 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 debian crittografiamo certbot ssl

Questo post fa parte di How to Install LAMP Stack su Debian 9 series.

Altri post di questa serie:

• Come installare Apache su Debian 9 • Come installare PHP su Debian 9 • Come configurare host virtuali Apache su Debian 9 • Come installare MariaDB su Debian 9 • Apache sicuro con Let's Encrypt su Debian 9