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