Vyhledávání na webu

Jak povolit HTTPS pro mezipaměť laku pomocí Hitch na CentOS-RHEL 8


Varnish Cache postrádá nativní podporu pro SSL/TLS a další protokoly spojené s portem 443. Pokud ke zvýšení výkonu webové aplikace používáte Varnish Cache, musíte nainstalovat a nakonfigurovat další software nazvaný SSL/TLS ukončení proxy, který bude fungovat společně s Varnish Cache pro povolení 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čí připojení TLS/SSL nasloucháním na portu 443 (výchozí port pro připojení HTTPS) a přesměruje nešifrovaný provoz do Varnish Cache. , mělo by to fungovat i s jinými backendy.

Podporuje TLS1.2 a TLS1.3 a starší TLS 1.0/1.1, podporuje ALPN (Application-Layer Protocol Negotiation) a NPN (Next Protocol Negotiation) pro HTTP/2, protokol PROXY pro signalizaci klienta IP/port k backendu, připojení soketu domény UNIX k původu, SNI (Indikace názvu serveru), se zástupnými certifikáty a bez nich. Kromě toho funguje dobře pro velké instalace, které vyžadují až 15 000 naslouchacích zásuvek a 500 000 certifikátů.

Jako pokračování našich dvou předchozích článků o instalaci Varnish Cache pro servery Nginx a Apache HTTP tento průvodce ukazuje, jak povolit HTTPS< pro Varnish Cache pomocí Hitch TLS Proxy na CentOS/RHEL 8.

Tato příručka předpokládá, že jste nainstalovali Varnish pro webový server Nginx nebo Apache, 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. Balíček Hitch je poskytován v úložišti EPEL (Extra Packages for Enterprise Linux). Chcete-li jej nainstalovat, nejprve v systému povolte EPEL a poté balíček nainstalujte. Pokud nemáte nainstalovaný balíček OpenSSL, nainstalujte jej také.

dnf install epel-release
dnf install hitch openssl

2. Po dokončení instalace balíčku budete muset nakonfigurovat Cache laku, aby fungovala jako Hitch. Musíte také nakonfigurovat Hitch, aby používal vaše certifikáty SSL/TLS a Varnish jako základní server. 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 Varnish, aby naslouchal dalšímu portu (v našem případě 8443) pomocí protokolu PROXY podporu pro komunikaci s Hitchem.

Otevřete tedy soubor služby Varnish systemd pro úpravy.

systemctl edit --full varnish

Vyhledejte řádek ExecStart a přidejte další příznak -a s hodnotou 127.0.0.1:8443,proxy. Použití 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ě připojení), 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 

Uložte soubor a restartujte službu Lak, 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 balíček certifikátů SSL/TLS, který bude použit 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 nástroj OpenSSL.

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 získejte bezplatný, automatizovaný a plně uznávaný certifikát od Let's Encrypt. Poté vytvořte svazek 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 

V případě Let's Encrypt budou certifikát, soukromý klíč a celý řetězec 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 Varnish jako backend pro Hitch a zadejte soubory certifikátu SSL/TLS, které se mají použít pro HTTPS, v hlavním konfiguračním souboru Hitch jej otevřete pro úpravy.

vi /etc/hitch/hitch.conf

Sekce frontend definuje IP adresy a port, kterému bude Hitch naslouchat. Výchozí konfigurace je poslouchat na všech rozhraních IPv4 a IPv6 připojených k serveru a běží na portu 443 a zpracovávat příchozí HTTPS< a předá je Laku.

V Hitch konfigurační soubor pomocí parametru backend. Také zadejte soubor certifikátu pomocí parametru pem-file podle obrázku.

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

Uložte soubor a zavřete jej.

6. Nyní spusťte službu hitch a povolte, aby se automaticky spouštěla při spouštění systému. Všimněte si, že přepínač --now při použití s povolením také spustí službu systemd a poté zkontroluje stav, zda je v provozu následujícím způsobem.

systemctl enable --now hitch
systemctl status hitch

7. Než budete pokračovat v testování, zda vaše webové stránky/aplikace nyní běží na HTTPS, musíte povolit port služby HTTPS 443 v 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 nastavení Varnish Cache-Hitch. Otevřete webový prohlížeč a použijte IP své domény nebo serveru k navigaci přes HTTPS.

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

Po načtení stránky indexu vaší webové aplikace zkontrolujte záhlaví HTTP, abyste se ujistili, ž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 ze seznamu možností vyberte Prozkoumat a otevřete nástroje pro vývojáře. Poté klikněte na kartu Síť a Znovu načtěte 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.

Krok 6: Přesměrování HTTP na HTTPS ve Varnish Cache

9. Chcete-li provozovat své webové stránky pouze na HTTPS, musíte přesměrovat veškerý provoz HTTP na HTTPS. Můžete to provést 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 podprogram vlc_recv, což je první podprogram VCL, který se spustí okamžitě poté, co Varnish Cache analyzuje 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 protokol PROXY umožňuje Varnish vidět Hitchův naslouchací port 443 z server.ip< proměnná. Takže řádek std.port(server.ip) vrací číslo portu, na kterém bylo přijato připojení klienta.

Pokud port není 443 pro HTTPS (jak je zkontrolováno (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í adresy URL).

Záhlaví Location bude odesláno do podprogramu vcl_synth (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 (jeden z jeho mnoha případů použití je přesměrování uživatelů), abyste zpracovali výše uvedený syntetizá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, hlavička HTTP Location v odpovědi je nastavena na hlavičku HTTP Location v požadavku, což je ve skutečnosti přesměrování na HTTPS a provede akci doručení.

Akce doručení vytvoří odpověď s odpovědí z backendu, uloží odpověď do mezipaměti a odešle ji klientovi.

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/

Odezva prohlížeče je také stejná jako na následujícím snímku obrazovky.

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 najdete v dokumentaci k vyrovnávací paměti laku a dokumentaci k Hitch.