Kaip įjungti HTTPS lako talpyklai naudojant „Hitch“ „CentOS-RHEL 8“.


Varnish Cache nepalaiko SSL/TLS ir kitų protokolų, susijusių su prievadu 443. Jei naudojate Varnish Cache, kad padidintumėte žiniatinklio programos našumą, turite įdiegti ir sukonfigūruoti kitą programinės įrangos dalį, vadinamą SSL/TLS nutraukimo tarpiniu serveriu, kad veiktų kartu su >Lako talpyklą, kad įgalintumėte HTTPS.

Hitch yra nemokamas atvirojo kodo, libev pagrįstas ir keičiamo dydžio SSL/TLS tarpinis serveris, sukurtas Varnish Cache, kuris šiuo metu veikia Linux, OpenBSD, FreeBSD ir MacOSX. Jis nutraukia TLS/SSL ryšius klausydamasis prievado 443 (numatytasis HTTPS ryšių prievadas) ir persiunčia nešifruotą srautą į Varnish Cache. , jis taip pat turėtų veikti su kitomis sistemomis.

Jis palaiko TLS1.2 ir TLS1.3 bei senas TLS 1.0/1.1, palaiko ALPN ( >Application-Layer Protocol Negotiation) ir NPN (Next Protocol Negotiation) HTTP/2, PROXY protokolui signalizuoti klientui IP/prievadas į pagrindinę programą, UNIX domeno lizdo jungtys su šaltiniu, SNI (Serverio pavadinimo indikacija), su pakaitos simboliais ir be jų. Be to, jis puikiai tinka dideliems įrenginiams, kuriems reikia iki 15 000 klausymosi lizdų ir 500 000 sertifikatų.

Tęsiant du ankstesnius straipsnius apie Varnish Cache diegimą Nginx ir Apache HTTP serveriuose, šiame vadove parodyta, kaip įgalinti HTTPS<. Lako talpyklai, naudojant Hitch TLS tarpinį serverį CentOS/RHEL 8.

Šiame vadove daroma prielaida, kad įdiegėte Varnish, skirtą Nginx arba Apache žiniatinklio serveriui, kitu atveju žr.

  • Kaip įdiegti „Larnish Cache 6“, skirtą „Nginx“ žiniatinklio serveriui „CentOS/RHEL 8“.
  • Kaip įdiegti „Varnish Cache 6“, skirtą „Apache“ žiniatinklio serveriui „CentOS/RHEL 8“.

1 veiksmas: įdiekite „Hitch“ „CentOS/RHEL 8“.

1. Paketas Hitch yra EPEL (Papildomi paketai, skirti Enterprise Linux) saugykloje. Norėdami jį įdiegti, pirmiausia įgalinkite EPEL savo sistemoje, tada įdiekite paketą. Jei nesate įdiegę OpenSSL paketo, įdiekite ir jį.

dnf install epel-release
dnf install hitch openssl

2. Kai paketo diegimas bus baigtas, turėsite sukonfigūruoti Lako talpyklą, kad veiktų Hitch. Taip pat turite sukonfigūruoti Hitch, kad naudotumėte SSL/TLS sertifikatus ir Lakas kaip backend. Pagrindinis „Hitch“ konfigūracijos failas yra adresu /etc/hitch/hitch.conf, kuris paaiškinamas toliau.

2 veiksmas: „Htch“ lako talpyklos konfigūravimas

3. Tada įgalinkite Varnish, kad galėtumėte klausytis papildomo prievado (mūsų atveju 8443) naudodami PROXY protokolą palaiko ryšį su Hitch.

Taigi atidarykite Varnish systemd paslaugos failą redaguoti.

systemctl edit --full varnish

Ieškokite eilutės ExecStart ir pridėkite papildomą žymą -a su reikšme 127.0.0.1:8443,proxy. Naudojant 127.0.0.1:8443 reikšmę, „Varnish“ priims tik vidinį ryšį (iš tame pačiame serveryje veikiančių procesų, t. y. šiuo atveju kliūties), bet nepriims išorinių ryšių.

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

Išsaugokite failą ir iš naujo paleiskite Lako paslaugą, kad pritaikytumėte naujausius pakeitimus.

systemctl restart varnish

3 veiksmas: gaukite SSL/TLS sertifikatus

4. Šioje skiltyje paaiškinsime, kaip sukurti SSL/TLS sertifikatų rinkinį, kuris bus naudojamas Hitch. Šiame vadove paaiškinsime įvairias parinktis, kaip naudoti savarankiškai pasirašytą sertifikatą, komercinį sertifikatą arba sertifikatą iš Šifruokime.

Norėdami sukurti savarankiškai pasirašytą sertifikatą (kurį turėtumėte naudoti tik vietinėje testavimo aplinkoje), galite naudoti įrankį 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

Tada sukurkite sertifikato ir rakto rinkinį, kaip nurodyta toliau.

cat tecmint.crt tecmint.key >tecmint.pem

Pastaba: gamybiniam naudojimui galite įsigyti sertifikatą iš komercinės sertifikavimo institucijos (CA) arba paimkite nemokamą, automatizuotą ir visiškai atpažįstamą sertifikatą iš Šifruokime. Tada sukurkite PEM paketą.

Jei įsigijote sertifikatą iš komercinės CA, turite sujungti privatųjį raktą, sertifikatą ir CA paketą, kaip parodyta.

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

Jei naudojate Šifruokime, sertifikatas, privatus raktas ir visa grandinė bus saugomi adresu /etc/letsencrypt/live/example.com/, todėl sukurkite rinkinį, kaip parodyta .

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

4 veiksmas: kablio konfigūravimas ir paleidimas

5. Tada sukonfigūruokite Varnish kaip Hitch užpakalinę programą ir nurodykite SSL/TLS sertifikato failus, kuriuos naudosite HTTPS pagrindiniame Hitch konfigūracijos faile atidarykite jį redaguoti.

vi /etc/hitch/hitch.conf

Skiltyje Priekinė dalis apibrėžiami IP adresai ir prievadas, kurių „Hitch“ klausys. Numatytoji konfigūracija yra klausytis visose IPv4 ir IPv6 sąsajose, prijungtose prie serverio ir veikia per prievadą 443 ir tvarkyti gaunamus HTTPS< užklausų, perduodama juos Lakas.

Pakeiskite numatytąjį backend tarpinio serverio prievadą iš 6086 į 8443 (prievadas, naudojamas užklausoms persiųsti į Varnish). Hitch konfigūracijos failas, naudojant parametrą backend. Taip pat nurodykite sertifikato failą naudodami parametrą pem-file, kaip parodyta.

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

Išsaugokite failą ir uždarykite jį.

6. Dabar paleiskite prikabinimo paslaugą ir įgalinkite ją automatiškai paleisti sistemos paleidimo metu. Atminkite, kad jungiklis --now, kai naudojamas kartu su įgalinimu, taip pat paleidžia sistemos paslaugą ir patikrina būseną, kad pamatytumėte, ar ji veikia, kaip nurodyta toliau.

systemctl enable --now hitch
systemctl status hitch

7. Prieš pradėdami tikrinti, ar jūsų svetainė/programa dabar veikia naudojant HTTPS, turite leisti HTTPS paslaugos 443 prievadą užkarda, kad užklausos, skirtos tam serverio prievadui, galėtų pereiti per užkardą.

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

5 veiksmas: SSL/TLS nutraukimo tikrinimas naudojant lako talpyklos sąsajos sąranką

8. Dabar laikas išbandyti Lako talpyklos prijungimo sąranką. Atidarykite žiniatinklio naršyklę ir naudodami domeną arba serverio IP naršykite per HTTPS.

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

Kai bus įkeltas žiniatinklio programos rodyklės puslapis, patikrinkite HTTP antraštes, kad įsitikintumėte, jog turinys teikiamas naudojant Varnish Cache.

Norėdami tai padaryti, dešiniuoju pelės klavišu spustelėkite įkeltą tinklalapį, parinkčių sąraše pasirinkite Tikrinti, kad atidarytumėte kūrėjo įrankius. Tada spustelėkite skirtuką Tinklas ir Įkelti iš naujo puslapį, tada pasirinkite užklausą peržiūrėti HTTP antraštes, kaip paryškinta toliau esančioje ekrano kopijoje.

6 veiksmas: HTTP peradresavimas į HTTPS „Varnish Cache“.

9. Jei norite paleisti svetainę tik naudojant HTTPS, visą HTTP srautą turite nukreipti į HTTPS. Tai galite padaryti įtraukę šią konfigūraciją į savo Hitch konfigūracijos failą.

vi /etc/hitch/hitch.conf 

Pirmiausia pridėkite eilutę import std; tiesiai po vlc 4.0;, tada suraskite vlc_recv paprogramę, kuri yra pirmoji VCL paprogramė, vykdoma nedelsiant po to, kai Varnish Cache išanalizavo kliento užklausą į pagrindinę duomenų struktūrą. Čia galime modifikuoti užklausų antraštes ir vykdyti sintezę, kad peradresuotų klientų užklausas.

Pakeiskite, kad atrodytų taip.

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

Atminkite, kad PROXY protokolas įgalina Varnish matyti Hitch klausymosi prievadą 443server.ip<. kintamasis. Taigi eilutėje std.port(server.ip) pateikiamas prievado numeris, kuriuo buvo gautas kliento ryšys.

Jei HTTPS prievadas nėra 443 (kaip patikrino (std.port(server.ip) != 443)), paprogramė nustatys užklausos HTTP vietos antraštę (set req.http.location) į saugią užklausą („https://“ + req.http.host< + req.url), tiesiog paprašykite žiniatinklio naršyklės įkelti tinklalapio HTTPS versiją (t. y. URL peradresavimą).

Antraštė Location bus išsiųsta į vcl_synth paprogramę (kuri iškviečiama naudojant return(synth(301))) su HTTP būsenos kodu 301 (Perkeltas visam laikui).

10. Tada pridėkite šią vcl_synth paprogramę (vienas iš daugelio jos naudojimo atvejų yra vartotojų peradresavimas), kad apdorotumėte anksčiau pateiktą sintezę.

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

Ji patikrina, ar atsakymo būsena yra 301, HTTP vietos antraštė atsakyme nustatyta kaip HTTP vietos antraštė užklausoje, kuri iš tikrųjų yra peradresavimas į HTTPS, ir atlieka pristatymo veiksmą.

Pristatymo veiksmas sukuria atsakymą su atsakymu iš užpakalinės programos, išsaugo atsakymą talpykloje ir siunčia jį klientui.

Išsaugokite failą ir uždarykite jį.

11. Dar kartą taikykite naujus lako konfigūracijos pakeitimus iš naujo paleisdami paslaugą. Tada naudokite curl komandinės eilutės įrankį, kad patvirtintumėte peradresavimą iš HTTP į HTTPS.

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

Iš naršyklės atsakymas taip pat yra toks pat, kaip parodyta toliau esančioje ekrano kopijoje.

Tikimės, kad iki šiol viskas veikė puikiai. Jei ne, pateikite komentarą ar klausimus naudodami toliau pateiktą atsiliepimų formą. Jei norite sužinoti daugiau apie visas išplėstines konfigūracijos parinktis, eikite į „Varnish Cache“ dokumentus ir „Hitch“ dokumentus.