CentOS-RHEL 8-de Hitch ulanyp, lak keşi üçin HTTPS-i nädip açmaly


Varnish Cache-de SSL/TLS we 443-nji port bilen baglanyşykly beýleki protokollar üçin ýerli goldaw ýok. Web programmaňyzyň işleýşini ýokarlandyrmak üçin Varnish Cache ulanýan bolsaňyz, işlemek üçin SSL/TLS ýatyryş proksi atly başga bir programma üpjünçiligini gurmaly we düzmeli. HTTPS-i işletmek üçin Varnish Keş bilen bilelikde.

“Hitch” häzirki wagtda Linux, OpenBSD, FreeBSD we MacOSX-da işleýän Varnish Cache üçin döredilen erkin açyk çeşme, libev esasly we ulalýan SSL/TLS proksi. 443-nji porty (HTTPS birikmeleri üçin deslapky port) diňlemek bilen TLS/SSL birikmelerini bes edýär we şifrlenmedik traffigi Varnish Keşine ugradýar, ýöne beýleki arka taraplar bilenem işlemeli.

TLS1.2 we TLS1.3 we miras galan TLS 1.0/1.1 goldaýar, ALPN (Programma-Layer Protocol Gepleşikleri) we HTTP/2 üçin NPN (Indiki Protokol gepleşikleri) goldaýar, müşderiniň IP/portuny arkasyna signal bermek üçin PROXY protokoly; , UNIX domen rozetkasynyň gelip çykyşy, SNI (Serweriň adyny görkezmek), kartoçka şahadatnamalary bilen we ýok. Mundan başga-da, 15 000-e çenli diňleýji rozetka we 500,000 şahadatnama talap edýän uly gurnamalar üçin gowy işleýär.

Nginx we Apache HTTP serwerleri üçin Varnish Keşini gurmak baradaky öňki iki makalamyzyň dowamy hökmünde, bu gollanma CentOS/RHEL 8-de Hitch TLS Proxy ulanyp, Varnish Keşi üçin HTTPS-i açmagy görkezýär.

Bu gollanma, Nginx ýa-da Apache web serweri üçin Varnish gurnandygyňyzy göz öňünde tutýar, ýogsam:

  • CentOS/RHEL 8-de Nginx web serweri üçin lak keşini 6 nädip gurmaly
  • CentOS/RHEL 8-de Apache web serweri üçin lak keşi 6-ny nädip gurmaly

1-nji ädim: “CentOS/RHEL 8” -e “Hitch” guruň

1. “Hitch” bukjasy EPEL (Enterprise Linux üçin goşmaça paketler) ammarynda berilýär. Ony gurmak üçin ilki bilen ulgamyňyzda EPEL-i işlediň we paketden soň guruň. OpenSSL paketiňiz ýok bolsa, ony hem guruň.

# dnf install epel-release
# dnf install hitch openssl

2. Bukjany gurnamak tamamlanandan soň, “Hitch” -i işlemek üçin “Varnish Cache” -ni düzmeli bolarsyňyz. Şeýle hem, SSL/TLS şahadatnamalaryňyzy we Varnişi arkasy hökmünde ulanmak üçin “Hitch” -i sazlamaly. Hitçiň esasy konfigurasiýa faýly aşakda düşündirilýän /etc/hitch/hitch.conf-da ýerleşýär.

2-nji ädim: Hit üçin lak keşini düzmek

3. Ondan soň, Harn bilen aragatnaşyk üçin PROXY protokol goldawyny ulanyp, goşmaça porty (biziň ýagdaýymyzda 8443) diňlemäge mümkinçilik beriň.

Şonuň üçin redaktirlemek üçin Varnish systemd hyzmat faýlyny açyň.

# systemctl edit --full varnish

ExecStart setirini gözläň we 127.0.0.1:8443,proxy bahasy bolan goşmaça -a baýdagyny goşuň. 127.0.0.1:8443 bahasyny ulanmak, Lakyň diňe içerki baglanyşygy kabul etjekdigini aňladýar (şol bir serwerde işleýän amallardan, bu ýagdaýda), ýöne daşarky baglanyşyk däl.

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

Faýly ýazdyryň we iň soňky üýtgeşmeleri ulanmak üçin Lak hyzmatyny täzeden açyň.

# systemctl restart varnish

3-nji ädim: SSL/TLS şahadatnamalaryny almak

4. Bu bölümde, Hitçiň aşagynda ulanyljak SSL/TLS şahadatnama bukjasyny nädip döretmelidigini düşündireris. Bu gollanma üçin, öz-özüňe gol çekilen şahadatnamany, täjirçilik şahadatnamasyny ýa-da “Let Encrypt” -den birini ulanmagyň dürli usullaryny düşündireris.

Öz-özüňe gol çekilen şahadatnamany döretmek üçin (diňe ýerli synag gurşawynda ulanmaly) OpenSSL guralyny ulanyp bilersiňiz.

# 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

Soňra şahadatnamanyň we açaryň bukjasyny aşakdaky ýaly dörediň.

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

Bellik: Önümçiligi ulanmak üçin täjirçilik şahadatnamasy edarasyndan (CA) şahadatnama satyn alyp bilersiňiz ýa-da Let Encrypt-dan mugt, awtomatlaşdyrylan we doly ykrar edilen şahadatnamany alyp bilersiňiz. Soňra PEM bukjasyny dörediň.

Täjirçilik CA-dan şahadatnama satyn alan bolsaňyz, şahsy açary, şahadatnamany we CA bukjasyny görkezilişi ýaly birleşdirmeli.

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

Geliň, şifrlemek üçin şahadatnama, şahsy açar we doly zynjyr /etc/letsencrypt/live/example.com/ astynda saklanar, şonuň üçin bukjany görkezilişi ýaly dörediň.

# 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-nji ädim: Hit sazlamak we başlamak

5. Ondan soň, “Varnish” -i “Hitch” -iň arkasy hökmünde düzüň we HTTPS üçin ulanmak üçin SSL/TLS şahadatnama faýllaryny görkeziň, “Hitch” esasy konfigurasiýa faýlynda, redaktirlemek üçin açyň.

# vi /etc/hitch/hitch.conf

Öň tarapy bölümi IP adreslerini kesgitleýär we Hitç diňlär. Deslapky konfigurasiýa serwerde birikdirilen ähli IPv4 we IPv6 interfeýslerini diňlemek we 443-nji portda işlemek we gelýän HTTPS haýyşlaryny Varnish-e bermek.

Yzky parametrini ulanyp, “Hitch” konfigurasiýa faýlynda deslapky arka proksi portuny 6086-dan 8443-e (Varnise haýyşlary ugratmak üçin ulanylýan port) üýtgediň. Şeýle hem, pem-faýl parametrini görkezilişi ýaly şahadatnama faýlyny görkeziň.

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

Faýly ýazdyryň we ýapyň.

6. Indi gysga hyzmaty başlaň we ulgam ýüklemesinden awtomatiki başlamaga mümkinçilik beriň. Işletmek bilen ulanylanda --now wyklýuçatel, systemd hyzmatyny hem başlaýar we aşakdaky ýaly işleýändigini ýa-da işlemeýändigini barlamak üçin ýagdaýy barlaň.

# systemctl enable --now hitch
# systemctl status hitch

7. Web sahypaňyzyň/programmaňyzyň indi HTTPS-de işleýändigini ýa-da ýokdugyny barlamazdan ozal, serwerdäki şol port üçin niýetlenen haýyşlaryň gorag diwaryndan geçmegine rugsat bermek üçin diwar diwaryndaky HTTPS hyzmat porty 443-e rugsat bermeli.

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

5-nji ädim: Lakly keş-hit sazlamasy bilen SSL/TLS-iň gutarmagyny barlamak

8. “Varnish Cache-Hitch” sazlamasyny synagdan geçirmegiň wagty geldi. Web brauzerini açyň we HTTPS-de gezmek üçin domeniňizi ýa-da serweriňiziň IP-ni ulanyň.

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

Web programmaňyzyň indeks sahypasy ýüklenenden soň, Varnish Keş arkaly mazmunyň berilýändigini tassyklamak üçin HTTP sözbaşylaryny barlaň.

Munuň üçin ýüklenen web sahypasyna sag basyň, dörediji gurallaryny açmak üçin opsiýalaryň sanawyndan Barlaň. Soňra Ulgam goýmasyna basyň we sahypany täzeden ýükläň, indiki skrinshotda görkezilişi ýaly HTTP sözbaşylaryny görmek haýyşyny saýlaň.

6-njy ädim: HTTP-ni Lak Keşinde HTTPS-e gönükdirmek

9. Web sahypaňyzy diňe HTTPS-de işletmek üçin ähli HTTP traffigini HTTPS-e gönükdirmeli. Muny “Hitch” konfigurasiýa faýlyňyza aşakdaky konfigurasiýa goşup edip bilersiňiz.

# vi /etc/hitch/hitch.conf 

Ilki bilen import std setirini goşuň; vlc 4.0-den aşakda, soň bolsa Varnish Keş müşderiniň haýyşyny esasy maglumat gurluşyna öwrenden soň derrew ýerine ýetirilen ilkinji VCL subroutini bolan vlc_recv subroutini gözläň. Bu ýerde haýyş sözbaşylaryny üýtgedip, müşderiniň isleglerini gönükdirmek üçin synth ýerine ýetirip bileris.

Şuňa meňzeş görnüşde üýtgediň.

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

PROXY protokoly Varnişiň serwer.ip üýtgeýjisinden Hitçiň diňleýän portuny 443 görmäge mümkinçilik berýändigini ýadyňyzdan çykarmaň. Şeýlelik bilen std.port (server.ip) setiri müşderi birikmesiniň alnan port belgisini görkezýär.

Port HTTPS üçin 443 däl bolsa ((std.port (server.ip)!=443 tarapyndan barlanylýar)), subroutin haýyşy HTTP Locationerleşiş sözbaşysyny (req.http.location belläň) ygtybarly haýyş bilen kesgitlär (“ https:/”+ req.http.host + req.url) web brauzerinden web sahypasynyň HTTPS wersiýasyny (meselem, URL gönükdirmesi) ýüklemegini soraýar.

Locationerleşiş sözbaşy, 301 belgili HTTP status kody bilen (hemişelik göçürildi) vcl_synth subroutine (gaýdyp (synth (301)) diýilýär) iberiler.

10. Ondan soň, ýokardaky synthy gaýtadan işlemek üçin aşakdaky vcl_synth subroutini goşuň (köp ulanylýan ýagdaýlaryň biri ulanyjylary gönükdirýär).

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

Jogap ýagdaýynyň 301 ýa-da däldigini barlaýar, jogapdaky HTTP Locationerleşiş sözbaşy, HTTPS-e gönükdirme we gowşuryş çäresini ýerine ýetirýän haýyşda HTTP Locationerleşiş sözbaşysyna düzüldi.

Getirmek çäresi arka tarapdan gelen jogap bilen jogap döredýär, jogaby keşde saklaýar we müşderä iberýär.

Faýly ýazdyryň we ýapyň.

11. Hyzmaty täzeden açyp, Lak konfigurasiýasyndaky täze üýtgeşmeleri ýene bir gezek ulanyň. Soňra HTTP-den HTTPS-e gönükdirmäni tassyklamak üçin curl buýruk setiri guralyny ulanyň.

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

Brauzerden jogap, aşakdaky skrinshotda görkezilişi ýaly.

Şu wagta çenli hemme zat gowy işledi diýip umyt edýäris. Notok bolsa, aşakdaky seslenme formasy arkaly teswir ýa-da sorag goýuň. Islendik ösen konfigurasiýa opsiýalary üçin “Hitch” resminamalaryna geçiň.