reindirizzare-da-http-a-https

reindirizzare-da-http-a-https

Stai utilizzando certificati autofirmati o certificati di una ben nota CA, hai bisogno di un modo per integrarlo con i tuoi servizi? Uno dei casi di utilizzo più tipici di un server HTTP, potrebbe essere un server Web o un server API REST, ma per essere sicuro deve essere configurato

La maggior parte dei server Web come nginx e apache si trovano per impostazione predefinita sulla porta 80 e richiedono una configurazione prima di iniziare a utilizzare i certificati per crittografare il traffico. Nonostante sia configurato, il web server può ancora gestire il traffico HTTP.
Pertanto, i visitatori del tuo sito web digiteranno http://example.com anziché https://example.com e l’intero traffico rimarrà non criptato per loro. Per ovviare a questo problema, è necessario configurare i server HTTP in modo tale che essi stessi reindirizzino tutto il protocollo HTTP a HTTPS.

L’installazione che ho sta usando un FQDN con un IP pubblico, quindi rilascerò un certificato SSL da LetsEncrypt piuttosto che emetterne uno autofirmato. A seconda del tipo di server Web che si sta utilizzando, è possibile farlo in diversi modi. Ma il flusso generale è così:

  • Ottieni un certificato firmato da una CA. Nel nostro caso questo sarà LetsEncrypt
  • Configurare il server Web per utilizzare la chiave di crittografia per crittografare il traffico HTTP in uscita sulla porta 443. Questa è la porta HTTPS predefinita.
  • Reindirizza tutte le richieste in arrivo sulla porta 80 (che è HTTP non crittografato) alla porta 443, abilitando in tal modo sessioni crittografate per tutte le connessioni in entrata.

Dimostriamo vari modi per ottenere ciò che vogliamo. La prima è la soluzione più semplice che utilizza Certbot.

1. Il modo più semplice: utilizzare i plugin Certbot per Nginx o Apache

Userò Nginx come esempio per questo server. Se ne stai eseguendo uno diverso, come Apache o HAProxy, visita la pagina ufficiale di Certbot e seleziona il tuo SO e il tuo server web preferito. Per Nginx su Ubuntu 18.04, questi sono i comandi di cui avresti bisogno.

Innanzitutto, aggiorna il tuo indice repo.

Terminale
  • sudo -s
  • apt-get update
  • apt-get install software-properties-common

Dovresti aggiungere i repository di terze parti richiesti, che Ubuntu potrebbe non aver abilitato per impostazione predefinita.

Terminale
  • sudo  -s
  • add-apt-repository universe
  • add-apt-repository ppa:certbot/certbot
  • apt-get update

Dopodiche installa il pacchetto certbot con i plugin Nginx, usando il seguente comando.

Terminale
  • sudo apt-get install certbot python-certbot-nginx

Per diverse piattaforme le istruzioni saranno tutt’altro allora se disponibile installeremo un plugin per il server Web.
Il motivo per cui i plugin rendono le nostre vite molto più semplici è che possono modificare automaticamente i file di configurazione sul server Web per reindirizzare il traffico.

Per i nuovi siti web o per le configurazioni molto semplici, come un proxy inverso , il plugin funziona sorprendentemente bene. Per ottenere i certificati e reindirizzare il traffico, esegui semplicemente il comando sottostante e segui le varie opzioni interattive mentre il pacchetto ti guida attraverso di esse.

Terminale
  • Reindirizzare da HTTP a HTTPSReindirizzare da HTTP a HTTPSsudo certbot –nginx

 

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel): LA TUA MAIL

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(A)gree/(C)ancel: a

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(Y)es/(N)o: y
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter ‘c’ to cancel):
Please specify –domains, or –installer that will help in domain names autodiscovery, or –cert-name for an existing certificate name.

SUBDOMAIN.DOMAINNAME.TLD

IMPORTANT NOTES:
– 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.

Congratulazioni! Il tuo certificato è stato salvato su:

/etc/letsencrypt/live/SUBDOMAIN.DOMAINNAME.TLD/fullchain.pem
Il tuo file chiave è stato salvato su:
/etc/letsencrypt/live/SUBDOMAIN.DOMAINNAME.TLD/privkey.pem

Come mostrato nell’esempio precedente, devi solo fornire un indirizzo email valido e il tuo nome di dominio per ottenere il certificato. Puoi trovare questo certificato in /etc/letsencrypt/live/SUBDOMAIN.DOMAINNAME.TLD . L’ultima directory sarà chiamata dopo il nome FQDN.

L’aspetto più importante è la selezione dell’opzione Redirect e farà il lavoro di reindirizzamento di tutto il traffico HTTP su HTTPS. Se sei curioso di sapere quali sono questi cambiamenti, puoi controllare i file di configurazione in /etc/nginx/ per ottenere il succo di ciò.

2. Modifica dei file di configurazione

Se desiderate configurare manualmente il server per utilizzare i certificati. Per ottenere i certificati utilizzando certbot, esegui:

Terminale
  • sudo certbot certonly

Come prima, i certificati verranno salvati nella directory /etc/letsencrypt/live/yourdomainname.com/

Ora possiamo configurare Nginx per usare i file in questa directory. Per prima cosa, mi libererò del layout di directory specifico di Debian. Il file di configurazione del sito della pagina predefinita è /etc/nginx/sites-available/default subdirectory /etc/nginx/sites-available/default con un link simbolico a /etc/nginx/site-enabled .

Cancellerò semplicemente il link simbolico e sposteremo il file di configurazione in /etc/nginx/conf.d con l’estensione .conf solo per mantenere le cose più generalizzate e applicabili anche ad altre distribuzioni.

  • sudo  -s
  • rm /etc/sites-enabled/default
  • mv /etc/nginx/sites-available/default /etc/nginx/conf.d/default.conf
  • service nginx restart
[/su_box]

Modificherò questo file di configurazione predefinito per dimostrare come è abilitato il TLS.

Grazie! per l’utilizzo della Guida di Linuxiano.

Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.

I seguenti sono i contenuti all’interno del tuo file di configurazione predefinito, senza le sezioni commentate. Le sezioni evidenziate sono quelle che dovresti aggiungere alla configurazione del server per abilitare TLS e l’ultimo blocco in questo file di configurazione rileva se lo schema utilizza TLS o meno. Se TLS non viene utilizzato, restituisce semplicemente un codice di reindirizzamento 301 al client e modifica l’URL per utilizzare invece https. In questo modo, non ti perderai gli utenti:

server {
ascolta 80 default_server;
ascolta [ :: ] : 80 default_server;
ascolta 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLS / fullchain.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLD / privkey.pem;
ssl_session_cache condivisa: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ” ECDHE -ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-
ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256
-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256
-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHE-ECDSA-AES128
-SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE
-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA: DHE
-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3
-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256
-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:! DSS ” ;

root / var / www / html;
indice index.html index.htm index.nginx-debian.html;
nome del server _;
posizione / {
try_files $ uri $ uri / = 404 ;
}
if ( $ scheme ! = “https” ) {
restituisce 301 https: // $ host $ request_uri ;
}

}

Esistono alcuni parametri aggiunti a questo file di configurazione tra cui, i parametri che dichiarano il timeout, la versione TLS che dovresti usare e quali cifrature di crittografia verranno utilizzate dal server. Questo è stato preso in prestito dalle configurazioni raccomandate (ma facoltative) di Certbot per Nginx. Ora, controlla se il file di configurazione è valido e riavvia il server:

  • sudo  -s
  • nginx -t
  • nginx: la sintassi del file di configurazione / etc / nginx / nginx.conf è ok
  • nginx: il file di configurazione / etc / nginx / nginx.conf ha esito positivo
  • service nginx restart

Conclusione

Ora potete applicare lo stesso approccio per applicazioni Web e servizi più complicati che richiedono HTTPS. Letsencrypt ti consente di emettere certificati per più nomi di dominio contemporaneamente, e puoi facilmente ospitare più siti web dietro il tuo server web nginx . Se hai seguito l’esempio precedente, prova a contattare il tuo sito web utilizzando http (// SUBDOMAIN.DOMAIN.TLD) e verrai reindirizzato automaticamente a HTTPS.

Per altri server web, come Apache, utilizzare il plugin certbot appropriato o consultare la documentazio

Grazie! per l’utilizzo della Guida di Linuxiano.

Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.

ne ufficiale.