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

Come abilitare HTTPS per Varnish Cache usando Hitch su CentOS-RHEL 8

Cache di vernice manca il supporto nativo per SSL/TLS e altri protocolli associati alla porta 443 . Se stai utilizzando Varnish Cache per aumentare le prestazioni della tua applicazione web, devi installare e configurare un altro software chiamato SSL/TLS proxy di terminazione, per lavorare insieme a Varnish Cache per abilitare HTTPS .

L'intoppo è un proxy SSL/TLS gratuito open source, basato su libev e scalabile progettato per Varnish Cache , che attualmente funziona su Linux, OpenBSD, FreeBSD e MacOSX. Termina le connessioni TLS/SSL restando in ascolto sulla porta 443 (la porta predefinita per HTTPS connessioni) e inoltra il traffico non crittografato a Varnish Cache , tuttavia, dovrebbe funzionare anche con altri backend.

Supporta TLS1.2 e TLS1.3 e TLS 1.0/1.1 legacy , supporta ALPN (Negoziazione del protocollo a livello di applicazione ) e NPN (Prossima negoziazione del protocollo ) per HTTP/2 , un protocollo PROXY per segnalare l'IP/porta del client a un back-end, connessioni socket di dominio UNIX all'origine, SNI (Indicazione del nome del server ), con e senza certificati jolly. Inoltre, funziona bene per installazioni di grandi dimensioni che richiedono fino a 15.000 prese di ascolto e 500.000 certificati.

Come continuazione dei nostri due articoli precedenti sull'installazione di Varnish Cache per Nginx e Apache Server HTTP, questa guida mostra come abilitare HTTPS per Cache vernice utilizzando Hitch TLS Proxy su CentOS/RHEL 8 .

Diagramma logico della nostra configurazione

Questa guida presuppone che tu abbia installato Vernice per Nginx o Apache server web, altrimenti vedi:

  • Come installare Varnish Cache 6 per Nginx Web Server su CentOS/RHEL 8
  • Come installare Varnish Cache 6 per Apache Web Server su CentOS/RHEL 8

Passaggio 1:installa Hitch su CentOS/RHEL 8

1. L'intoppo il pacchetto è fornito in EPEL (Pacchetti extra per Enterprise Linux ) deposito. Per installarlo, prima abilita EPEL sul tuo sistema e quindi installare il pacchetto in seguito. Se non hai OpenSSL pacchetto installato, installalo anche tu.

# dnf install epel-release
# dnf install hitch openssl

Installa Hitch su CentOS 8

2. Al termine dell'installazione del pacchetto, dovrai configurare Varnish Cache per lavorare Stop . Devi anche configurare Hitch per utilizzare il tuo SSL/TLS certificati e vernice come backend . Il file di configurazione principale di Hitch si trova in /etc/hitch/hitch.conf , che è spiegato di seguito.

Fase 2:configurazione della cache di vernice per Hitch

3. Quindi, abilita Vernice per ascoltare una porta aggiuntiva (8443 nel nostro caso) utilizzando il PROXY supporto del protocollo, per comunicazioni con Hitch .

Quindi apri il systemd di Varnish file di servizio per la modifica.

# systemctl edit --full varnish

Cerca la riga ExecStart e aggiungi un ulteriore -a flag con il valore 127.0.0.1:8443,proxy . Utilizzando un valore di 127.0.0.1:8443 significa che Varnish accetterà solo la connessione interna (dai processi in esecuzione sullo stesso server, ad esempio intoppi in questo caso) ma non le connessioni esterne.

ExecStart=/usr/sbin/varnishd -a :80 -a 127.0.0.1:8443,proxy -f /etc/varnish/default.vcl -s malloc,256m 

Imposta la porta di ascolto della vernice per Hitch

Salva il file e riavvia il servizio Varnish per applicare le ultime modifiche.

# systemctl restart varnish

Fase 3:ottenimento dei certificati SSL/TLS

4. In questa sezione spiegheremo come creare SSL/TLS pacchetto di certificati da utilizzare in Hitch . Per questa guida, spiegheremo le diverse opzioni su come utilizzare un certificato autofirmato, un certificato commerciale o uno di Let's Encrypt .

Per creare un certificato autofirmato (che dovresti utilizzare solo in un ambiente di test locale), puoi utilizzare OpenSSL strumento.

# mkdir /etc/ssl/tecmint.lan
# cd /etc/ssl/tecmint.lan/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout  tecmint.lan.key -out tecmint.lan.crt

Quindi crea un pacchetto di certificato e chiave come segue.

# cat tecmint.crt tecmint.key >tecmint.pem

Nota :per l'uso in produzione, puoi acquistare un certificato da un'Autorità di certificazione commerciale (CA ) o prendi un certificato gratuito, automatizzato e completamente riconosciuto da Let's Encrypt . Quindi crea un pacchetto PEM.

Se hai acquistato un certificato da una CA commerciale , devi unire la chiave privata, il certificato e il bundle CA come mostrato.

# cat example.com.key example.com.crt example.com-ca-bundle.crt > /etc/ssl/example.com.pem 

Per Crittografiamo , il certificato, la chiave privata e l'intera catena verranno archiviati in /etc/letsencrypt/live/example.com/ , quindi crea il pacchetto come mostrato.

# cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem >/etc/letsencrypt/live/example.com/example.com_bundle.pem

Fase 4:configurazione e avvio di Hitch

5. Quindi, configura Vernice come backend per Hitch e specifica SSL/TLS file di certificato da utilizzare per HTTPS , nel attacco file di configurazione principale, aprilo per modificarlo.

# vi /etc/hitch/hitch.conf

Il frontend la sezione definisce gli indirizzi IP e la porta Hitch ascolterà. La configurazione predefinita prevede l'ascolto su tutti gli IPv4 e IPv6 interfacce collegate al server e gira sulla porta 443 e gestisci gli HTTPS in entrata richieste, consegnandole a Vernice .

Modifica il backend predefinito porta proxy da 6086 a 8443 (la porta utilizzata per inoltrare le richieste a Varnish ) nel attacco file di configurazione, utilizzando il backend parametro. Inoltre, specifica il file del certificato utilizzando il file-pem parametro come mostrato.

backend = "[127.0.0.1]:8443"
#pem-dir = "/etc/pki/tls/private"
pem-file = "/etc/ssl/tecmint.lan/tecmint.pem"

Configura Hitch come proxy SSL/TLS per Varnish

Salva il file e chiudilo.

6. Ora avvia l'intoppo servizio e abilitarlo per l'avvio automatico all'avvio del sistema. Nota che il --now switch quando utilizzato con enable, avvia anche un servizio systemd e quindi controlla lo stato per vedere se è attivo e funzionante come segue.

# systemctl enable --now hitch
# systemctl status hitch

Verifica lo stato dell'aggancio

7. Prima di procedere, verifica se il tuo sito web/applicazione è ora in esecuzione su HTTPS , devi consentire gli HTTPS porta di servizio 443 nel firewall per consentire alle richieste destinate a quella porta sul server di passare attraverso il firewall.

# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

Passaggio 5:verifica della terminazione SSL/TLS con l'impostazione Varnish Cache-Hitch

8. È giunto il momento di testare il Varnish Cache-Hitch impostare. Apri un browser web e utilizza l'IP del tuo dominio o server per navigare su HTTPS .

https://www.example.com
OR
https://SERVER_IP/

Una volta caricata la pagina indice della tua applicazione web, controlla HTTP intestazioni per confermare che il contenuto viene servito tramite Varnish Cache .

Per farlo, fai clic con il pulsante destro del mouse sulla pagina Web caricata, seleziona Ispeziona dall'elenco di opzioni per aprire gli strumenti per sviluppatori. Quindi fai clic su Rete scheda e Ricarica la pagina, quindi seleziona una richiesta per visualizzare le intestazioni HTTP, come evidenziato nello screenshot seguente.

Controlla l'impostazione HTTPS su Varnish Cache

Passaggio 6:reindirizzamento da HTTP a HTTPS nella cache Varnish

9. Per eseguire il tuo sito web su HTTPS solo, devi reindirizzare tutti gli HTTP traffico verso HTTPS . Puoi farlo aggiungendo la seguente configurazione nel file di configurazione di Hitch.

# vi /etc/hitch/hitch.conf 

Innanzitutto, aggiungi la riga import std; appena sotto vlc 4.0; , quindi cerca il vlc_recv subroutine, che è la prima subroutine VCL eseguita immediatamente dopo Varnish Cache ha analizzato la richiesta del client nella sua struttura di dati di base. È qui che possiamo modificare le intestazioni delle richieste ed eseguire un synth per reindirizzare le richieste dei client.

Modificalo in modo che assomigli a questo.

sub vcl_recv {
    if (std.port(server.ip) != 443) {
        set req.http.location = "https://" + req.http.host + req.url;
        return(synth(301));
    }
}

Tieni presente che il PROXY il protocollo abilita la vernice per vedere Hitch porta di ascolto 443 dal server.ip variabile. Quindi la riga std.port(server.ip) restituisce il numero di porta su cui è stata ricevuta la connessione client.

Se la porta non è 443 per HTTPS (come verificato da (std.port(server.ip) !=443) ), la subroutine imposterà l'intestazione della posizione HTTP della richiesta (set req.http.location ) a una richiesta sicura ("https:// ” + rich.http.host + URL richiesto ) chiedendo semplicemente al browser web di caricare un HTTPS versione della pagina web (ad es. reindirizzamento URL).

La Posizione l'intestazione verrà inviata a vcl_synth subroutine (chiamata usando return(synth(301)) ) con un codice di stato HTTP di 301 (Spostato definitivamente ).

10. Quindi, aggiungi la seguente subroutine vcl_synth (uno dei suoi numerosi casi d'uso è il reindirizzamento degli utenti), per elaborare il sintetizzatore sopra.

sub vcl_synth {
        if (resp.status == 301) {
                set resp.http.location = req.http.location;
		  set resp.status = 301;
                return (deliver);
        }
}

Verifica se lo stato della risposta è 301 , l'intestazione della posizione HTTP nella risposta è impostata sull'intestazione della posizione HTTP nella richiesta, che in realtà è un reindirizzamento a HTTPS ed esegue un'azione di consegna.

L'azione di consegna crea una risposta con la risposta dal back-end, archivia la risposta nella cache e la invia al client.

Configura Hitch per reindirizzare HTTP a HTTPS

Salva il file e chiudilo.

11. Ancora una volta, applica le nuove modifiche nella configurazione di Varnish riavviando il servizio. Quindi utilizza lo strumento a riga di comando curl per confermare il reindirizzamento da HTTP a HTTPS .

# systemctl restart varnish
# curl -I http://eaxmple.com/

Seleziona Reindirizzamento da HTTP a HTTPS

Dal browser, anche la risposta è la stessa mostrata nello screenshot seguente.

Controlla il reindirizzamento da HTTP a HTTPS nel browser

Speriamo che tutto abbia funzionato bene fino a questo punto. In caso contrario, lascia un commento o domande tramite il modulo di feedback qui sotto. Per qualsiasi opzione di configurazione avanzata, vai alla documentazione di Varnish Cache e alla documentazione di Hitch.

Condividere è prendersi cura...
Condividi su FacebookCondividi su TwitterCondividi su LinkedinCondividi su Reddit
Cent OS
  1. Come installare Varnish Cache su CentOS

  2. Come installare Varnish Cache 4 su CentOS 7

  3. Come abilitare più siti HTTPS per un IP su Debian Etch usando le estensioni TLS

  4. CentOS / RHEL 7:come abilitare telnet per un gruppo di utenti

  5. Come abilitare la registrazione dettagliata per VSFTPD

Come installare Varnish Cache per Nginx su CentOS 8/Almalinux 8

Come installare Varnish Cache per Apache su CentOS/RHEL 8

Come abilitare HTTPS per Varnish Cache usando Hitch su CentOS-RHEL 8

Come installare Varnish Cache 6 per Nginx su CentOS/RHEL 8

Come velocizzare Nginx con Varnish Cache su CentOS 7

Come velocizzare Apache con Varnish Cache su CentOS 7