Vyrovnávací paměť laku postrádá nativní podporu pro SSL/TLS a další protokoly spojené s portem 443 . Pokud používáte Varnish Cache Chcete-li zvýšit výkon své webové aplikace, musíte nainstalovat a nakonfigurovat další software nazvaný SSL/TLS ukončovací proxy, aby fungoval společně s Varnish Cache aktivovat HTTPS .
Hitch je bezplatný open source, libev založený a škálovatelný SSL/TLS proxy určený pro Varnish Cache , který v současnosti funguje na Linuxu, OpenBSD, FreeBSD a MacOSX. Ukončuje připojení TLS/SSL nasloucháním na portu 443 (výchozí port pro HTTPS připojení) a přesměruje nešifrovaný provoz do Varnish Cache měl by však fungovat i s jinými backendy.
Podporuje TLS1.2 a TLS1.3 a starší verze TLS 1.0/1.1 , podporuje ALPN (Application-Layer Protocol Negotiation ) a NPN (Next Protocol Negotiation ) pro HTTP/2 , protokol PROXY pro signalizaci IP/port klienta do backendu, připojení soketu domény UNIX k původu, SNI (Indikace názvu serveru ), s certifikáty se zástupnými znaky a bez nich. Kromě toho funguje dobře pro velké instalace, které vyžadují až 15 000 poslechové zásuvky a 500 000 certifikáty.
Jako pokračování našich dvou předchozích článků o instalaci Varnish Cache pro Nginx a Apache HTTP servery, tento průvodce ukazuje, jak povolit HTTPS pro Vyrovnávací paměť laku pomocí Hitch TLS Proxy na CentOS/RHEL 8 .
Logické schéma našeho nastavení
Tato příručka předpokládá, že jste nainstalovali Varnish pro Nginx nebo Apache webový server, jinak viz:
- Jak nainstalovat Varnish Cache 6 pro webový server Nginx na CentOS/RHEL 8
- Jak nainstalovat Varnish Cache 6 pro webový server Apache na CentOS/RHEL 8
Krok 1:Nainstalujte Hitch na CentOS/RHEL 8
1. Hitch balíček je poskytován v EPEL (Další balíčky pro Enterprise Linux ) úložiště. Chcete-li jej nainstalovat, nejprve povolte EPEL na vašem systému a poté balíček nainstalujte. Pokud nemáte OpenSSL balíček nainstalován, nainstalujte jej také.
# dnf install epel-release # dnf install hitch openssl
Nainstalujte Hitch na CentOS 8
2. Po dokončení instalace balíčku budete muset nakonfigurovat Varnish Cache do práce Hitch . Musíte také nakonfigurovat Hitch používat vaše SSL/TLS certifikáty a lak jako backend . Hlavní konfigurační soubor Hitch se nachází na adrese /etc/hitch/hitch.conf , což je vysvětleno níže.
Krok 2:Konfigurace mezipaměti laku pro Hitch
3. Dále povolte Lakování pro poslech dalšího portu (8443 v našem případě) pomocí PROXY podpora protokolu pro komunikaci s Hitch .
Otevřete tedy Varnish systemd servisní soubor pro úpravy.
# systemctl edit --full varnish
Vyhledejte řádek ExecStart a přidejte další -a
příznak s hodnotou 127.0.0.1:8443,proxy . Pomocí hodnoty 127.0.0.1:8443 znamená, že Varnish bude akceptovat pouze interní připojení (z procesů běžících na stejném serveru, tj. v tomto případě závěs), ale ne externí připojení.
ExecStart=/usr/sbin/varnishd -a :80 -a 127.0.0.1:8443,proxy -f /etc/varnish/default.vcl -s malloc,256m
Nastavte port pro naslouchání laku pro Hitch
Uložte soubor a restartujte službu Varnish, abyste použili nejnovější změny.
# systemctl restart varnish
Krok 3:Získání certifikátů SSL/TLS
4. V této části vysvětlíme, jak vytvořit SSL/TLS balíček certifikátů, který se má použít v části Hitch . V této příručce vysvětlíme různé možnosti, jak používat certifikát s vlastním podpisem, komerční certifikát nebo certifikát z Let’s Encrypt .
Chcete-li vytvořit certifikát s vlastním podpisem (který byste měli používat pouze v místním testovacím prostředí), můžete použít OpenSSL nástroj.
# 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
Poté vytvořte svazek certifikátu a klíče následovně.
# cat tecmint.crt tecmint.key >tecmint.pem
Poznámka :Pro produkční použití si můžete buď zakoupit certifikát od komerční Certifikační autority (CA ) nebo si získejte bezplatný, automatizovaný a plně uznávaný certifikát od Let’s Encrypt . Poté vytvořte balíček PEM.
Pokud jste zakoupili certifikát od komerční CA , musíte sloučit soukromý klíč, certifikát a balíček CA, jak je znázorněno.
# cat example.com.key example.com.crt example.com-ca-bundle.crt > /etc/ssl/example.com.pem
Pro Let’s Encrypt , certifikát, soukromý klíč a celý řetězec budou uloženy pod /etc/letsencrypt/live/example.com/ , takže vytvořte balíček podle obrázku.
# cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem >/etc/letsencrypt/live/example.com/example.com_bundle.pem
Krok 4:Konfigurace a spuštění Hitch
5. Dále nakonfigurujte Lak jako backend pro Hitch a zadejte SSL/TLS soubory certifikátů k použití pro HTTPS , v Hitch hlavní konfigurační soubor, otevřete jej pro úpravy.
# vi /etc/hitch/hitch.conf
Rozhraní sekce definuje IP adresy a port Hitch bude poslouchat. Výchozí konfigurace je poslouchat na všech IPv4 a IPv6 rozhraní připojené k serveru a běží na portu 443 a zpracovávat příchozí HTTPS požadavky a předá je Laku .
Změňte výchozí backend proxy port z 6086 na 8443 (port používaný k předávání požadavků na Varnish ) v Hitch konfiguračního souboru pomocí backendu parametr. Také zadejte soubor certifikátu pomocí souboru pem parametr, jak je znázorněno.
backend = "[127.0.0.1]:8443" #pem-dir = "/etc/pki/tls/private" pem-file = "/etc/ssl/tecmint.lan/tecmint.pem"
Nakonfigurujte Hitch jako SSL/TLS proxy pro lak
Uložte soubor a zavřete jej.
6. Nyní spusťte závěs službu a povolit její automatické spouštění při startu systému. Všimněte si, že --now
přepínač při použití s povolením spustí také službu systemd a poté zkontroluje stav, zda je v provozu, a to následovně.
# systemctl enable --now hitch # systemctl status hitch
Ověřte stav Hitch
7. Než budete pokračovat v testování, zda váš web/aplikace nyní běží na HTTPS , musíte povolit HTTPS servisní port 443 ve bráně firewall, aby požadavky určené pro tento port na serveru mohly procházet bránou firewall.
# firewall-cmd --zone=public --permanent --add-service=https # firewall-cmd --reload
Krok 5:Testování ukončení SSL/TLS pomocí nastavení Varnish Cache-Hitch
8. Nyní je čas otestovat Varnish Cache-Hitch založit. Otevřete webový prohlížeč a pomocí IP domény nebo serveru procházejte HTTPS .
https://www.example.com OR https://SERVER_IP/
Po načtení indexové stránky vaší webové aplikace zkontrolujte HTTP záhlaví, abyste potvrdili, že obsah je poskytován prostřednictvím Varnish Cache .
Chcete-li to provést, klikněte pravým tlačítkem myši na načtenou webovou stránku a vyberte možnost Zkontrolovat ze seznamu možností pro otevření nástrojů pro vývojáře. Poté klikněte na Síť a Znovu načíst stránku a poté vyberte požadavek na zobrazení záhlaví HTTP, jak je zvýrazněno na následujícím snímku obrazovky.
Zkontrolujte nastavení HTTPS v mezipaměti laku
Krok 6:Přesměrování HTTP na HTTPS ve Varnish Cache
9. Chcete-li provozovat své webové stránky na HTTPS pouze musíte přesměrovat všechny HTTP provoz na HTTPS . Můžete to udělat přidáním následující konfigurace do konfiguračního souboru Hitch.
# vi /etc/hitch/hitch.conf
Nejprve přidejte řádek import std; těsně pod vlc 4.0; a poté vyhledejte vlc_recv podprogram, což je první podprogram VCL spuštěný bezprostředně po Varnish Cache analyzoval požadavek klienta do jeho základní datové struktury. Zde můžeme upravit hlavičky požadavků a spustit syntezátor pro přesměrování požadavků klientů.
Upravte jej, aby vypadal takto.
sub vcl_recv { if (std.port(server.ip) != 443) { set req.http.location = "https://" + req.http.host + req.url; return(synth(301)); } }
Všimněte si, že PROXY protokol umožňuje Lakování zobrazíte Hitch's naslouchací port 443 z server.ip variabilní. Tedy řádek std.port(server.ip) vrátí číslo portu, na kterém bylo přijato připojení klienta.
Pokud port není 443 pro HTTPS (podle kontroly (std.port(server.ip) !=443) ), podprogram nastaví hlavičku HTTP Location požadavku (set req.http.location). ) na zabezpečený požadavek („https:// ” + req.http.host + req.url ) jednoduše požádáte webový prohlížeč o načtení HTTPS verze webové stránky (tj. přesměrování URL).
Umístění záhlaví bude odesláno do vcl_synth podprogram (který se nazývá pomocí return(synth(301)) ) se stavovým kódem HTTP 301 (Přesunuto trvale ).
10. Dále přidejte následující podprogram vcl_synth (jedním z mnoha případů použití je přesměrování uživatelů), zpracovat výše uvedený syntezátor.
sub vcl_synth { if (resp.status == 301) { set resp.http.location = req.http.location; set resp.status = 301; return (deliver); } }
Zkontroluje, zda je stav odpovědi 301 , je hlavička HTTP Location v odpovědi nastavena na hlavičku HTTP Location v požadavku, což je ve skutečnosti přesměrování na HTTPS a provádí akci doručení.
Akce doručení vytvoří odpověď s odpovědí z backendu, uloží odpověď do mezipaměti a odešle ji klientovi.
Nakonfigurujte Hitch pro přesměrování HTTP na HTTPS
Uložte soubor a zavřete jej.
11. Znovu aplikujte nové změny v konfiguraci Varnish restartováním služby. Poté pomocí nástroje příkazového řádku curl potvrďte přesměrování z HTTP na HTTPS .
# systemctl restart varnish # curl -I http://eaxmple.com/
Zkontrolujte přesměrování HTTP na HTTPS
Odezva prohlížeče je také stejná jako na následujícím snímku obrazovky.
Zkontrolujte přesměrování HTTP na HTTPS v prohlížeči
Doufáme, že až do této chvíle vše fungovalo dobře. Pokud ne, napište komentář nebo dotazy prostřednictvím formuláře pro zpětnou vazbu níže. Veškeré pokročilé možnosti konfigurace naleznete v dokumentaci k vyrovnávací paměti laku a dokumentaci k Hitch.
Sharing is Caring…Sdílet na FacebookuSdílet na TwitteruSdílet na LinkedinSdílet na Redditu