GNU/Linux >> Linux Esercitazione >  >> Cent OS

SSL gratuito per Nginx su Centos di Let's encrypt

Panoramica

Let's encrypt è un'autorità di certificazione che fornisce un modo semplice per ottenere gratuitamente un certificato SSL/TLS per il tuo sito web, abilitando così https crittografati sui server web. Let's Encrypt semplifica l'acquisizione e l'installazione del certificato SSL utilizzando un software chiamato CertBot. Questo client software serve un processo completamente automatizzato per i server Web Apache. Tuttavia, i certificati SSL gratuiti di Let's Encrypt possono essere installati manualmente su qualsiasi server Web con alcune modifiche interne.

In questo tutorial, dimostreremo la procedura per utilizzare certbot-auto Crittografiamo il client per ottenere un certificato SSL gratuito e utilizzarlo con Nginx su Ubuntu 14.04. Questo tutorial ti spiegherà anche come rinnovare automaticamente il tuo certificato SSL. Se stai utilizzando un server web diverso, segui semplicemente la documentazione del tuo server web per imparare a utilizzare il certificato con la tua configurazione.

Prerequisito

  • Utente non root con privilegi Sudo
  • Devi possedere o avere il controllo amministrativo sul dominio per il quale desideri ottenere il certificato SSL.
  • Un record A creato sotto il pannello DNS, che indirizza il tuo dominio all'indirizzo IP pubblico del tuo server. Ciò è necessario a causa del modo in cui Let's Encrypt convalida la tua proprietà del dominio per il quale sta emettendo un certificato. Ad esempio, se desideri ottenere un certificato per example.com , quel dominio deve essere risolto sul tuo server affinché il processo di convalida funzioni. La nostra configurazione utilizzerà example.com e www.example.com come i nomi di dominio, quindi sono richiesti entrambi i record DNS

Fase 1 — Installa Let's Encrypt Client

Inizialmente, devi scaricare il client software CertBot sul tuo server. Puoi scaricare CertBot dal sito Web ufficiale di EFF.

Scarica il software CertBot nella directory /usr/local/sbin directory on your server:

cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
$ cd /usr/local/sbin   
sudo wget https://dl.eff.org/certbot-auto
[sudo] password for example: 
--2016-11-28 13:26:28--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org... 173.239.79.196
Connecting to dl.eff.org|173.239.79.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44442 (43K) [text/plain]
Saving to: `certbot-auto'

100%[======================================>] 44,442       154K/s   in 0.3s    

2016-11-28 13:26:30 (154 KB/s) - `certbot-auto' saved [44442/44442]

Cert-Bot è ora scaricato in /usr/local/sbin sul tuo server. Ora rendi eseguibile il file immettendo il seguente comando:

sudo chmod a+x /usr/local/sbin/certbot-auto

Il software Cerbot-auto è ora pronto per essere installato.

Fase 2 — Ottieni un certificato

Esistono diversi modi per ottenere un certificato SSL da Let's Encrypt tramite vari plugin. È necessario ottenere un plug-in di autenticazione per acquisire un certificato SSL. Assicurati che questi plugin otterranno solo il certificato e dovrai installarlo manualmente.

In questo tutorial, utilizziamo un plugin chiamato Webroot per l'autenticazione.

Plugin Webroot

Il plug-in Webroot genera un file esclusivo nella directory / .well-known all'interno della radice del tuo documento, a cui Let's Encrypt può accedere tramite il tuo server web e questo completerà la convalida di la tua autorità sul dominio. Potrebbe essere necessario configurare l'autorizzazione per il file in / .well-known.

Se non hai ancora installato Ngnix, usa i comandi seguenti per installarlo:

sudo yum update
sudo yum install ngnix

Per rendere il file accessibile a certbot-auto, apportiamo alcune modifiche richieste al file di configurazione di Nginx. Il file di configurazione di ngnix si trova nella directory /etc/nginx/sites-available/default, per impostazione predefinita. Modifichiamo il file di configurazione:

sudo vim /etc/nginx/sites-available/default

Aggiungi il seguente blocco di posizione al file:

Aggiungi al blocco server SSL
server {
        . . .

        location ~ /.well-known {
                allow all;
        }

        . . .
}

Vuoi anche cercare su cosa è impostata la radice del tuo documento cercando la root direttiva, poiché il percorso è necessario per utilizzare il plug-in Webroot. Se stai utilizzando il file di configurazione predefinito, la radice sarà /usr/share/nginx/html .

Salva il file premendo Esc seguito da :wq! e premi il tasto Invio.

Puoi controllare il file di configurazione per errori di sintassi:

sudo nginx -t

Se trovi il file di configurazione privo di errori di sintassi, riavvia il servizio ngnix

sudo service nginx restart

Ora possiamo usare il plugin webroot per la convalida, poiché conosciamo l'esatta posizione del percorso webroot. Utilizzare il comando seguente per richiedere il certificato SSL utilizzando il plug-in webroot:

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

I nomi di dominio non devono essere specificati con -d opzione. Se desideri che un singolo certificato funzioni con più nomi di dominio (ad es. example.com e www.example.com ), assicurati di includerli tutti, a partire dal dominio di livello più alto (ad es. example.com ).

Nota: Il certbot-auto il software richiede i privilegi di superutente, quindi ti verrà richiesto di inserire la tua password se non hai utilizzato sudo recentemente.

Quando certbot-auto inizializza ti verranno richieste alcune informazioni. I prompt esatti possono variare a seconda che tu abbia utilizzato certbot-auto cliente prima. Fornisci le informazioni necessarie e alla fine seleziona Accetto.

Output:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to [email protected]
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   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 Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Annota il percorso e la data di scadenza dall'output.

Nota firewall: Se ricevi un messaggio di errore come Failed to connect to host for DVSNI challenge , potrebbe essere necessario configurare il firewall del tuo server per consentire il traffico TCP sulla porta 80 e 443 .

Nota: Se il tuo dominio è instradato tramite un servizio DNS come CloudFlare, dovrai disabilitarlo temporaneamente fino a quando non avrai ottenuto il certificato.

File del certificato

Dopo aver ottenuto il certificato, avrai i seguenti file con codifica PEM:

  • cert.pem: Il certificato del tuo dominio
  • chain.pem: Il certificato della catena Let's Encrypt
  • fullchain.pem:cert.pem e chain.pem combinato
  • privkey.pem: La chiave privata del tuo certificato

Puoi verificare che i file esistano eseguendo questo comando (sostituendo il tuo nome di dominio):

sudo ls -l /etc/letsencrypt/live/your_domain_name

L'output dovrebbe essere costituito dai quattro file di certificato menzionati in precedenza. Tra un momento, configurerai il tuo server web per utilizzare fullchain.pem come file del certificato e privkey.pem come file della chiave del certificato.

Genera un forte gruppo Diffie-Hellman

Per aumentare ulteriormente la sicurezza, genera un gruppo Diffie-Hellman forte utilizzando il comando:

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

Il percorso del gruppo DH sarebbe /etc/ssl/certs/dhparam.pem 2048

Fase 3 — Configura TLS/SSL su Web Server (Nginx)

Ora devi configurare il tuo server web Nginx per usarlo. Modifica la configurazione di Nginx che contiene il tuo blocco server :

sudo nano /etc/nginx/sites-available/default

Trova il server bloccare. Commenta o elimina le righe che configurano questo blocco server per l'ascolto sulla porta 80. Nella configurazione predefinita, queste due righe dovrebbero essere eliminate:

Eliminazioni della configurazione di Nginx
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

Configureremo invece questo blocco server per l'ascolto sulla porta 443 con SSL abilitato. All'interno del tuo server { block, aggiungi le seguenti righe ma sostituisci tutte le istanze di example.com con il tuo dominio:

Aggiunte alla configurazione di Nginx:1 di 3
        listen 443 ssl;

        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ciò consente al tuo server di utilizzare SSL e gli dice di utilizzare il certificato Let's Encrypt SSL che abbiamo ottenuto in precedenza.

Per consentire solo i protocolli e le crittografie SSL più sicuri e utilizzare il forte gruppo Diffie-Hellman che abbiamo generato, aggiungi le seguenti righe allo stesso blocco server:

Aggiunte alla configurazione di Nginx — 2 di 3
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

Infine, al di fuori del blocco server originale (che è in ascolto su HTTPS, porta 443), aggiungi questo blocco server per reindirizzare HTTP (porta 80) a HTTPS.

Aggiunte alla configurazione di Nginx — 3 di 3
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Salva ed esci.

Verifica il file di configurazione per errori di sintassi digitando:

sudo nginx -t

Una volta verificato che non ci sono errori di sintassi, metti in atto le modifiche riavviando Nginx:

sudo service nginx restart

Il certificato Let's Encrypt TLS/SSL è ora attivo. A questo punto, dovresti verificare che il certificato TLS/SSL funzioni visitando il tuo dominio tramite HTTPS in un browser web.

Puoi utilizzare il rapporto Qualys SSL Labs per vedere il punteggio della configurazione del tuo server:

In un browser web:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Questa configurazione SSL dovrebbe riportare un A+ valutazione.

Fase 4:imposta il rinnovo automatico

I certificati Let's Encrypt sono validi per 90 giorni, ma si consiglia di rinnovare i certificati ogni 60 giorni per consentire un margine di errore. Al momento in cui scrivo, il rinnovo automatico non è ancora disponibile come funzionalità del client stesso, ma puoi rinnovare manualmente i tuoi certificati eseguendo il certbot-auto cliente con il renew opzione.

Per attivare il processo di rinnovo per tutti i domini installati, esegui questo comando:

certbot-auto renew

Poiché abbiamo installato il certificato di recente, il comando verificherà solo la data di scadenza e stamperà un messaggio che informa che il certificato non è ancora dovuto al rinnovo. L'output dovrebbe essere simile a questo:

Output:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /home/sammy/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Nota che se hai creato un certificato in bundle con più domini, nell'output verrà mostrato solo il nome di dominio di base, ma il rinnovo dovrebbe essere valido per tutti i domini inclusi in questo certificato .

Un modo pratico per garantire che i tuoi certificati non diventino obsoleti è creare un lavoro cron che esegua periodicamente il comando di rinnovo automatico per te. Poiché il rinnovo verifica prima la data di scadenza ed esegue il rinnovo solo se il certificato è a meno di 30 giorni dalla scadenza, è sicuro creare un processo cron che viene eseguito ogni settimana o anche ogni giorno, ad esempio.

Modifichiamo crontab per creare un nuovo lavoro che eseguirà il comando di rinnovo ogni settimana. Per modificare crontab per l'utente root, esegui:

sudo crontab -e

Aggiungi le seguenti righe:

voce crontab
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Salva ed esci. Questo creerà un nuovo lavoro cron che eseguirà il certbot-auto renew comanda ogni lunedì alle 2:30 e ricarica Nginx alle 2:35 (quindi verrà utilizzato il certificato rinnovato). L'output prodotto dal comando verrà reindirizzato a un file di registro situato in /var/log/le-renewal.log .


Cent OS
  1. Come installare il certificato SSL su Apache per CentOS 7

  2. Protezione di ISPConfig 3.1 con un certificato SSL gratuito Lets Encrypt

  3. Let's Encrypt:ottieni un certificato SSL gratuito utilizzando Certbot

  4. Proteggi Apache con Let's Encrypt su CentOS 7 - Processo passo dopo passo?

  5. Come ottenere un certificato SSL gratuito con SSL It! e Let's Encrypt su Plesk

Come installare il certificato SSL gratuito per Apache su CentOS 8

Come installare il certificato SSL gratuito per Nginx su CentOS 8

Come abilito Let's encrypt Free SSL Certificate per il mio dominio in Plesk?

Proteggi Nginx con Let's Encrypt SSL Certificate su Ubuntu 18.04

Come proteggere Nginx con Let's Encrypt certificato SSL

Come proteggere Nginx con Let's Encrypt su CentOS 8