GNU/Linux >> Znalost Linux >  >> Cent OS

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

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
Cent OS
  1. Jak nainstalovat Varnish Cache 4 na CentOS 7

  2. Jak povolit více webů HTTPS pro jednu IP na Debian Etch pomocí rozšíření TLS

  3. CentOS / RHEL 7 :Jak povolit telnet pro skupinu uživatelů

  1. Jak nainstalovat mezipaměť laku na CentOS

  2. Jak povolit protokol pomalých dotazů pro MySQL

  3. Jak povolit podrobné protokolování pro VSFTPD

  1. Jak nainstalovat mezipaměť laku na CentOS 8

  2. CentOS / RHEL:Jak povolit SSL pro Apache

  3. Jak povolit výpis jádra pro aplikace na CentOS/RHEL