Hvernig á að virkja HTTPS fyrir Varnish Cache með Hitch á CentOS-RHEL 8


Varnish Cache skortir innbyggðan stuðning fyrir SSL/TLS og aðrar samskiptareglur sem tengjast port 443. Ef þú ert að nota Varnish Cache til að auka afköst vefforritsins þíns þarftu að setja upp og stilla annan hugbúnað sem kallast SSL/TLS termination proxy, til að virka við hlið Varnish Cache til að virkja HTTPS.

The Hitch er ókeypis opinn uppspretta, libev-undirstaða og stigstærð SSL/TLS umboð hannaður fyrir Varnish Cache, sem virkar nú á Linux, OpenBSD, FreeBSD og MacOSX. Það slítur TLS/SSL tengingum með því að hlusta á höfn 443 (sjálfgefin tengi fyrir HTTPS tengingar) og sendir ódulkóðuðu umferðina áfram til Varnish Cache, en það ætti að virka með öðrum bakenda líka.

Það styður TLS1.2 og TLS1.3 og eldri TLS 1.0/1.1, styður ALPN (Application-Layer Protocol Negotiation) og NPN (Next Protocol Negotiation) fyrir HTTP/2, PROXY samskiptareglur til að merkja IP/gátt viðskiptavinarins við bakenda. , UNIX lénstengingar við upprunann, SNI (Server Name Indication), með og án algildisvottorðs. Að auki virkar það vel fyrir stórar uppsetningar sem þurfa allt að 15.000 hlustunarinnstungur og 500.000 vottorð.

Í framhaldi af tveimur fyrri greinum okkar um uppsetningu á Varnish Cache fyrir Nginx og Apache HTTP netþjóna, sýnir þessi handbók að virkja HTTPS fyrir Varnish Cache með Hitch TLS Proxy á CentOS/RHEL 8.

Þessi handbók gerir ráð fyrir að þú hafir sett upp Varnish fyrir Nginx eða Apache vefþjón, annars sjáðu:

  • Hvernig á að setja upp Varnish Cache 6 fyrir Nginx vefþjón á CentOS/RHEL 8
  • Hvernig á að setja upp Varnish Cache 6 fyrir Apache vefþjón á CentOS/RHEL 8

Skref 1: Settu upp Hitch á CentOS/RHEL 8

1. Hitch pakkinn er í EPEL (Extra Packages for Enterprise Linux) geymslunni. Til að setja það upp skaltu fyrst virkja EPEL á vélinni þinni og setja síðan upp pakkann eftir það. Ef þú ert ekki með OpenSSL pakka uppsettan skaltu setja hann upp líka.

# dnf install epel-release
# dnf install hitch openssl

2. Þegar uppsetningu pakkans er lokið verður þú að stilla Varnish Cache til að virka Hitch. Þú þarft líka að stilla Hitch til að nota SSL/TLS vottorðin þín og Varnish sem bakenda. Aðalstillingarskrá Hitch er staðsett á /etc/hitch/hitch.conf, sem er útskýrt hér að neðan.

Skref 2: Stilla Varnish Cache fyrir Hitch

3. Næst skaltu gera Varnish kleift að hlusta á viðbótargátt (8443 í okkar tilviki) með því að nota PROXY samskiptareglur fyrir samskipti við Hitch.

Svo opnaðu Varnish systemd þjónustuskrána til að breyta.

# systemctl edit --full varnish

Leitaðu að línunni ExecStart og bættu við -a fána til viðbótar með gildinu 127.0.0.1:8443,proxy. Að nota gildið 127.0.0.1:8443 þýðir að Varnish mun aðeins samþykkja innri tenginguna (frá ferlum sem keyra á sama netþjóni, þ.e. hitch í þessu tilfelli) en ekki ytri tengingar.

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

Vistaðu skrána og endurræstu síðan Varnish þjónustuna til að beita nýjustu breytingunum.

# systemctl restart varnish

Skref 3: Að fá SSL/TLS vottorð

4. Í þessum hluta munum við útskýra hvernig á að búa til SSL/TLS vottorðabúntinn til að nota undir Hitch. Fyrir þessa handbók munum við útskýra mismunandi valkosti hvernig á að nota sjálfundirritað vottorð, viðskiptavottorð eða eitt frá Let's Encrypt.

Til að búa til sjálfstætt undirritað vottorð (sem þú ættir aðeins að nota í staðbundnu prófunarumhverfi) geturðu notað OpenSSL tólið.

# 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

Búðu síðan til búnt af vottorðinu og lyklinum sem hér segir.

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

Athugið: Til framleiðslunotkunar geturðu annað hvort keypt vottorð frá viðskiptavottorðsyfirvöldum (CA) eða fengið ókeypis, sjálfvirkt og fullkomlega viðurkennt vottorð frá Let's Encrypt. Búðu síðan til PEM búnt.

Ef þú keyptir vottorð frá CA í atvinnuskyni þarftu að sameina einkalykilinn, vottorðið og CA búntinn eins og sýnt er.

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

Fyrir Let's Encrypt verða vottorðið, einkalykillinn og öll keðjan geymd undir /etc/letsencrypt/live/example.com/, svo búðu til búntinn eins og sýnt er.

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

Skref 4: Stilla og ræsa hitch

5. Næst skaltu stilla Varnish sem bakenda fyrir Hitch og tilgreina SSL/TLS vottorðsskrárnar sem á að nota fyrir HTTPS, í Hitch aðalstillingarskránni, opnaðu hana til að breyta.

# vi /etc/hitch/hitch.conf

Framendahlutinn skilgreinir IP tölurnar og port Hitch mun hlusta á. Sjálfgefin stilling er að hlusta á öll IPv4 og IPv6 tengi sem eru tengd á þjóninum og keyra á höfn 443 og sjá um mótteknar HTTPS beiðnir og afhenda þær til Varnish.

Breyttu sjálfgefna bakenda umboðsgáttinni úr 6086 í 8443 (gáttin sem notuð er til að framsenda beiðnir til Varnish) í Hitch stillingarskránni með því að nota bakenda færibreytuna. Tilgreindu einnig vottorðsskrána með því að nota pem-skrá færibreytuna eins og sýnt er.

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

Vistaðu skrána og lokaðu henni.

6. Ræstu nú hitch þjónustuna og gerðu það kleift að byrja sjálfkrafa við ræsingu kerfisins. Athugaðu að --nú rofinn þegar hann er notaður með virkja, ræsir kerfisþjónustu líka og athugaðu síðan stöðuna til að sjá hvort hún sé í gangi sem hér segir.

# systemctl enable --now hitch
# systemctl status hitch

7. Áður en þú heldur áfram að prófa hvort vefsíðan/forritið þitt sé nú keyrt á HTTPS þarftu að leyfa HTTPS þjónustugátt 443 í eldveggnum til að leyfa beiðnum sem ætlaðar eru til þess tengis á þjóninum að fara í gegnum eldvegginn.

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

Skref 5: Prófa SSL/TLS uppsögn með Varnish Cache-Hitch uppsetningu

8. Nú er kominn tími til að prófa Varnish Cache-Hitch uppsetninguna. Opnaðu vafra og notaðu IP lénið þitt eða netþjónsins til að fletta yfir HTTPS.

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

Þegar vísitölusíðu vefforritsins þíns hefur hlaðast skaltu athuga HTTP hausana til að staðfesta að efni sé þjónað í gegnum Varnish Cache.

Til að gera það skaltu hægrismella á hlaðna vefsíðuna, velja Skoða af listanum yfir valkosti til að opna þróunarverkfærin. Smelltu síðan á Network flipann og endurhlaða síðuna, veldu síðan beiðni um að skoða HTTP hausana, eins og auðkennt er á eftirfarandi skjámynd.

Skref 6: Beina HTTP til HTTPS í Varnish Cache

9. Til að keyra vefsíðuna þína eingöngu á HTTPS þarftu að beina allri HTTP umferð yfir á HTTPS. Þú getur gert þetta með því að bæta eftirfarandi stillingum í Hitch stillingarskrána þína.

# vi /etc/hitch/hitch.conf 

Fyrst skaltu bæta við línu import std; rétt fyrir neðan vlc 4.0;, leitaðu síðan að vlc_recv undirrútínunni, sem er fyrsta VCL undirrútínan sem keyrð er strax eftir að Varnish Cache hefur flokkað beiðni viðskiptavinarins inn í grunngagnaskipulagið. Það er þar sem við getum breytt beiðnihausum og framkvæmt synth til að beina beiðni viðskiptavina.

Breyttu því þannig að það líti svona út.

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

Athugaðu að PROXY samskiptareglur gera Varnish kleift að sjá hlustunargátt Hitch 443 frá server.ip breytunni. Þannig að línan std.port(server.ip) skilar gáttarnúmerinu sem biðlaratengingin var móttekin á.

Ef gáttin er ekki 443 fyrir HTTPS (eins og athugað af (std.port(server.ip) != 443)), mun undirrútínan stilla beiðni HTTP staðsetningarhaus (setja req.http.location) á örugga beiðni (“ https://” + req.http.host + req.url) einfaldlega að biðja vefvafrann um að hlaða HTTPS útgáfu af vefsíðunni (þ.e. slóð tilvísun).

Staðsetningarhausinn verður sendur í vcl_synth undirrútínuna (sem kallast að nota return(synth(301))) með HTTP stöðukóða 301 (Fært varanlega).

10. Næst skaltu bæta við eftirfarandi vcl_synth undirrútínu (eitt af mörgum notkunartilfellum hennar er að beina notendum áfram), til að vinna úr synthnum hér að ofan.

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

Það athugar hvort svarstaðan sé 301, HTTP staðsetningarhausinn í svarinu er stilltur á HTTP staðsetningarhausinn í beiðninni sem er í raun tilvísun til HTTPS og framkvæmir afhendingaraðgerð.

Sendingaraðgerðin byggir svar með svarinu frá bakendanum, geymir svarið í skyndiminni og sendir það til viðskiptavinarins.

Vistaðu skrána og lokaðu henni.

11. Enn og aftur, notaðu nýju breytingarnar í Varnish uppsetningunni með því að endurræsa þjónustuna. Notaðu síðan curl skipanalínutólið til að staðfesta tilvísun frá HTTP til HTTPS.

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

Frá vafranum er svarið einnig það sama og sýnt er á eftirfarandi skjámynd.

Við vonum að allt hafi gengið vel fram að þessu. Ef ekki, sendu athugasemd eða spurningar í gegnum athugasemdaformið hér að neðan. Fyrir alla háþróaða stillingarvalkosti, farðu í Hitch skjölin.