Kā iespējot HTTPS lakas kešatmiņai, izmantojot CentOS-RHEL 8 Hitch


Lakas kešatmiņai trūkst vietējā atbalsta SSL/TLS un citiem protokoliem, kas saistīti ar 443. portu. Ja izmantojat lakas kešatmiņu, lai uzlabotu tīmekļa lietojumprogrammas veiktspēju, lai darbotos, jāinstalē un jākonfigurē cita programmatūras daļa, ko sauc par SSL/TLS pārtraukšanas starpniekserveri. līdzās lakas kešatmiņai, lai iespējotu HTTPS.

The Hitch ir bezmaksas atvērtā koda, uz libev balstīts un mērogojams SSL/TLS starpniekserveris, kas paredzēts lakas kešatmiņai, kas pašlaik darbojas Linux, OpenBSD, FreeBSD un MacOSX. Tas pārtrauc TLS/SSL savienojumus, klausoties 443. portu (noklusējuma ports HTTPS savienojumiem) un pārsūta nešifrēto trafiku uz lakas kešatmiņu, tomēr tam vajadzētu strādāt arī ar citām aizmugurēm.

Tas atbalsta TLS1.2 un TLS1.3, kā arī mantoto TLS 1.0/1.1, atbalsta ALPN (lietojumprogrammu slāņa protokola sarunas) un NPN (nākamā protokola sarunas) HTTP/2, PROXY protokols klienta IP/porta signālam aizmugurē , UNIX domēna ligzdas savienojumi ar izcelsmi, SNI (Server Name Indication), ar aizstājējzīmju sertifikātiem un bez tiem. Turklāt tas labi darbojas lielām instalācijām, kurām nepieciešamas līdz 15 000 klausīšanās ligzdām un 500 000 sertifikātu.

Kā turpinājums mūsu diviem iepriekšējiem rakstiem par lakas kešatmiņas instalēšanu Nginx un Apache HTTP serveriem, šī rokasgrāmata parāda, kā iespējot HTTPS lakas kešatmiņai, izmantojot Hitch TLS starpniekserveri CentOS/RHEL 8.

Šajā rokasgrāmatā tiek pieņemts, ka esat instalējis Nginx vai Apache tīmekļa servera laku, pretējā gadījumā skatiet:

  • Kā CentOS/RHEL 8 instalēt Nginx tīmekļa servera 6. kešatmiņu
  • Kā instalēt Apache tīmekļa servera 6 kešatmiņu CentOS/RHEL 8

1. darbība: uzstādiet sakabi uz CentOS/RHEL 8

1. Hitch pakete ir pieejama EPEL (Extra Packages for Enterprise Linux) repozitorijā. Lai to instalētu, vispirms iespējojiet EPEL savā sistēmā un pēc tam instalējiet pakotni. Ja jums nav instalēta OpenSSL pakotne, instalējiet to arī.

# dnf install epel-release
# dnf install hitch openssl

2. Kad pakotnes instalēšana būs pabeigta, jums būs jākonfigurē lakas kešatmiņa, lai tā darbotos. Jums arī jākonfigurē Hitch, lai izmantotu SSL/TLS sertifikātus un laku kā aizmuguri. Galvenais Hitch konfigurācijas fails atrodas vietnē /etc/hitch/hitch.conf, kas ir paskaidrots tālāk.

2. darbība: konfigurējiet lakas kešatmiņu Hitch

3. Pēc tam iespējojiet laku, lai sazinātos ar Hitch, lai klausītos papildu portu (mūsu gadījumā - 8443), izmantojot PROXY protokola atbalstu.

Tāpēc rediģēšanai atveriet servisa sistēmas Lakas failu.

# systemctl edit --full varnish

Meklējiet līniju ExecStart un pievienojiet papildu karodziņu -a ar vērtību 127.0.0.1:8443,proxy. Izmantojot vērtību 127.0.0.1:8443, laka pieņems tikai iekšējo savienojumu (no procesiem, kas darbojas tajā pašā serverī, t.i. šajā gadījumā sakabes), bet ne ārējos savienojumus.

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

Saglabājiet failu un pēc tam restartējiet pakalpojumu Laka, lai lietotu jaunākās izmaiņas.

# systemctl restart varnish

3. darbība: SSL/TLS sertifikātu iegūšana

4. Šajā sadaļā mēs paskaidrosim, kā izveidot SSL/TLS sertifikātu paketi, kas jāizmanto sadaļā Hitch. Šajā rokasgrāmatā mēs izskaidrosim dažādas iespējas, kā izmantot pašparakstītu sertifikātu, komerciālu sertifikātu vai no Let’s Encrypt.

Lai izveidotu pašparakstītu sertifikātu (kuru vajadzētu izmantot tikai vietējā testēšanas vidē), varat izmantot OpenSSL rīku.

# 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

Pēc tam izveidojiet sertifikāta un atslēgas paketi šādi.

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

Piezīme. Ražošanas vajadzībām varat nopirkt sertifikātu no komerciālas sertifikātu iestādes (CA) vai arī paņemt bezmaksas, automatizētu un pilnībā atzītu sertifikātu vietnē Let’s Encrypt. Pēc tam izveidojiet PEM paketi.

Ja sertifikātu iegādājāties no komerciālās CA, jums jāapvieno privātā atslēga, sertifikāts un CA pakete, kā parādīts.

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

Vietnei Let’s Encrypt sertifikāts, privātā atslēga un visa ķēde tiks glabāta zem /etc/letsencrypt/live/example.com/, tāpēc izveidojiet paketi, kā parādīts.

# 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. darbība: sakabes konfigurēšana un palaišana

5. Pēc tam konfigurējiet Varnish kā Hitch aizmuguri un norādiet SSL/TLS sertifikāta failus, kurus izmantot HTTPS, Hitch galvenajā konfigurācijas failā atveriet to rediģēšanai.

# vi /etc/hitch/hitch.conf

Frontend sadaļā ir noteiktas IP adreses un portu, kurus Hičs klausīsies. Noklusējuma konfigurācija ir klausīties visas IPv4 un IPv6 saskarnes, kas pievienotas serverim un darbojas 443. portā, un apstrādāt ienākošos HTTPS pieprasījumus, nododot tos lakai.

Mainiet noklusējuma aizmugures starpniekservera portu no 6086 uz 8443 (ports, kuru izmanto pieprasījumu pārsūtīšanai uz laku) Hitch konfigurācijas failā, izmantojot aizmugures parametru. Norādiet arī sertifikāta failu, izmantojot parametru pem-file, kā parādīts.

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

Saglabājiet failu un aizveriet to.

6. Tagad sāciet sakabes pakalpojumu un ļaujiet tam automātiski startēt sistēmas sāknēšanas laikā. Ņemiet vērā, ka slēdzis - tagad , izmantojot to ar iespējošanu, palaiž arī systemd pakalpojumu un pēc tam pārbauda statusu, lai redzētu, vai tas darbojas un darbojas.

# systemctl enable --now hitch
# systemctl status hitch

7. Pirms turpināt pārbaudīt, vai jūsu vietne/lietojumprogramma tagad darbojas ar HTTPS, jums jāļauj ugunsmūrī izmantot HTTPS pakalpojuma portu 443, lai ļautu serverim pārsūtīt pieprasījumus, kas paredzēti šai ostai, caur ugunsmūri.

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

5. darbība: SSL/TLS izbeigšanas pārbaude ar lakas kešatmiņas iestatīšanu

8. Tagad ir pienācis laiks pārbaudīt Lakas kešatmiņas iestatīšanu. Atveriet tīmekļa pārlūkprogrammu un izmantojiet sava domēna vai servera IP, lai pārvietotos pa HTTPS.

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

Kad jūsu tīmekļa lietojumprogrammas rādītāja lapa ir ielādēta, pārbaudiet HTTP galvenes, lai pārliecinātos, ka saturs tiek rādīts, izmantojot lakas kešatmiņu.

Lai to izdarītu, ar peles labo pogu noklikšķiniet uz ielādētās tīmekļa lapas, opciju sarakstā atlasiet Pārbaudīt, lai atvērtu izstrādātāja rīkus. Pēc tam noklikšķiniet uz cilnes Tīkls un atkārtoti ielādējiet lapu, pēc tam atlasiet pieprasījumu, lai skatītu HTTP galvenes, kā norādīts nākamajā ekrānuzņēmumā.

6. darbība: HTTP novirzīšana uz HTTPS lakas kešatmiņā

9. Lai savu vietni palaistu tikai HTTPS, jums ir jānovirza visa HTTP trafika uz HTTPS. To var izdarīt, pievienojot Hitch konfigurācijas failā šādu konfigurāciju.

# vi /etc/hitch/hitch.conf 

Vispirms pievienojiet rindu import std; tieši zem vlc 4.0 ;, tad meklējiet apakšprogrammu vlc_recv, kas ir pirmā VCL apakšprogramma, kas izpildīta tūlīt pēc tam, kad Varnish Cache ir parsējis klienta pieprasījumu tās pamatdatu struktūrā. Šeit mēs varam modificēt pieprasījumu galvenes un izpildīt sintezatoru, lai novirzītu klienta pieprasījumus.

Modificējiet to, lai tas izskatās šādi.

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

Ņemiet vērā, ka PROXY protokols ļauj lakai redzēt mainīgo Hitch klausīšanās portu 443 no servera.ip. Tātad līnija std.port (server.ip) atgriež porta numuru, kurā tika saņemts klienta savienojums.

Ja HTTPS ports nav 443 (to pārbauda (std.port (server.ip)! = 443)), apakšprogramma pieprasījuma HTTP atrašanās vietas galvenei (iestatiet req.http.location) iestatīs drošu pieprasījumu (“ https:/”+ req.http.host + req.url) vienkārši lūdzot tīmekļa pārlūkprogrammu ielādēt tīmekļa lapas HTTPS versiju (ti, URL novirzīšanu).

Atrašanās vietas galvene tiks nosūtīta apakšprogrammai vcl_synth (kas tiek izsaukta, izmantojot return (synth (synth (301))), ar HTTP statusa kodu 301 (pārvietots pastāvīgi).

10. Pēc tam pievienojiet šādu apakšprogrammu vcl_synth (viens no daudzajiem izmantošanas gadījumiem ir lietotāju novirzīšana), lai apstrādātu iepriekš minēto sintezatoru.

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

Tas pārbauda, vai atbildes statuss ir 301, HTTP atrašanās vietas galvene atbildē tiek iestatīta uz HTTP atrašanās vietas galveni pieprasījumā, kas faktiski ir novirzīšana uz HTTPS, un izpilda piegādes darbību.

Piegādes darbība veido atbildi ar aizmugures atbildi, saglabā atbildi kešatmiņā un nosūta klientam.

Saglabājiet failu un aizveriet to.

11. Vēlreiz lietojiet jaunās izmaiņas lakas konfigurācijā, restartējot pakalpojumu. Pēc tam izmantojiet čokurošanās komandrindas rīku, lai apstiprinātu novirzīšanu no HTTP uz HTTPS.

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

Pārlūkprogrammā atbilde ir tāda pati kā parādīta nākamajā ekrānuzņēmumā.

Mēs ceram, ka līdz šim brīdim viss ir darbojies lieliski. Ja nē, nometiet komentāru vai jautājumus, izmantojot zemāk esošo atsauksmju veidlapu. Par visām papildu konfigurācijas opcijām dodieties uz Hitch dokumentāciju.