HTTPS: n ottaminen käyttöön lakan välimuistissa HOS-toiminnolla CentOS-RHEL 8: lla


Varnish-välimuistista puuttuu natiivi tuki SSL/TLS: lle ja muille porttiin 443 liittyville protokollille. Jos käytät lakan välimuistia verkkosovelluksesi suorituskyvyn parantamiseksi, sinun on asennettava ja määritettävä toinen ohjelmisto, nimeltään SSL/TLS-välityspalvelin, jotta se toimisi. HTTPS: n ottamiseksi käyttöön Varnish Cache -ohjelmassa.

Hitch on ilmainen avoimen lähdekoodin, libev-pohjainen ja skaalautuva SSL/TLS-välityspalvelin, joka on suunniteltu Varnish-välimuistille, joka toimii tällä hetkellä Linuxilla, OpenBSD: llä, FreeBSD: llä ja MacOSX: lla. Se lopettaa TLS/SSL-yhteydet kuuntelemalla porttia 443 (oletusportti HTTPS-yhteyksille) ja välittää salaamattoman liikenteen Varnish Cache -laitteeseen, mutta sen pitäisi toimia myös muiden taustojen kanssa.

Se tukee malleja TLS1.2 ja TLS1.3 sekä vanhoja TLS 1.0/1.1, tukee ALPN: ää (Application-Layer Protocol Negotiation) ja NPN (Next Protocol Negotiation) HTTP/2: lle, PROXY-protokollaa asiakkaan IP/portin signaloimiseksi taustalle , UNIX-toimialueen liitännät alkuperään, SNI (palvelimen nimen indikaatio), jokerimerkkisertifikaateilla ja ilman niitä. Lisäksi se toimii hyvin suurissa asennuksissa, jotka vaativat jopa 15 000 kuuntelupistettä ja 500 000 sertifikaattia.

Kahden edellisen artikkeliimme, jotka koskivat Varnish-välimuistin asentamista Nginx- ja Apache HTTP -palvelimille, tämä opas osoittaa, että HTTPS otetaan käyttöön lakan välimuistille käyttämällä Hitch TLS -välityspalvelinta CentOS/RHEL 8: ssa.

Tässä oppaassa oletetaan, että olet asentanut Varnish for Nginx- tai Apache-verkkopalvelimen, muuten katso:

  • Kuinka asentaa Nginx-verkkopalvelimen Lakkivälimuisti 6 CentOS/RHEL 8: een
  • Apache-verkkopalvelimen Lakkivälimuisti 6: n asentaminen CentOS/RHEL 8: een

Vaihe 1: Asenna vetokoukku CentOS/RHEL 8: een

1. Hitch-paketti on EPEL (Extra Packages for Enterprise Linux) -tietovarastossa. Asenna se ottamalla ensin käyttöön EPEL järjestelmässäsi ja asentamalla paketti sen jälkeen. Jos sinulla ei ole OpenSSL-pakettia asennettuna, asenna se myös.

# dnf install epel-release
# dnf install hitch openssl

2. Kun paketin asennus on valmis, sinun on määritettävä lakan välimuisti toimimaan Hitchin kanssa. Sinun on myös määritettävä Hitch käyttämään SSL/TLS-varmenteitasi ja Lakkaa taustana. Hitchin pääasetustiedosto sijaitsee osoitteessa /etc/hitch/hitch.conf, mikä selitetään alla.

Vaihe 2: Lakan välimuistin määrittäminen Hitchille

3. Anna seuraavaksi Varnishille mahdollisuus kuunnella lisäporttia (tapauksessamme 8443) PROXY-protokollatukea käyttäen Hitchin kanssa tapahtuvaan viestintään.

Joten avaa Varnish systemd -palvelutiedosto muokkausta varten.

# systemctl edit --full varnish

Etsi rivi ExecStart ja lisää ylimääräinen -a -lippu arvolla 127.0.0.1:8443,proxy. Arvon 127.0.0.1:8443 käyttö tarkoittaa, että lakka hyväksyy vain sisäisen yhteyden (samassa palvelimessa käynnissä olevista prosesseista eli tässä tapauksessa kytkentä), mutta ei ulkoisia yhteyksiä.

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

Tallenna tiedosto ja käynnistä sitten Varnish-palvelu uudelleen, jotta viimeisimmät muutokset otetaan käyttöön.

# systemctl restart varnish

Vaihe 3: SSL/TLS-varmenteiden hankkiminen

4. Tässä osassa selitämme, kuinka luodaan SSL/TLS-varmentepaketti käytettäväksi Hitch-kohdassa. Tässä oppaassa selitämme erilaisia vaihtoehtoja itse allekirjoitetun, kaupallisen tai Let’s Encrypt -sertifikaatin käyttämiseen.

Voit luoda itse allekirjoitetun varmenteen (jota sinun tulisi käyttää vain paikallisessa testausympäristössä) käyttämällä OpenSSL-työkalua.

# 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

Luo sitten paketti varmenteesta ja avaimesta seuraavasti.

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

Huomaa: Tuotantokäyttöä varten voit joko ostaa sertifikaatin kaupallisesta varmenteesta (CA) tai napata ilmaisen, automatisoidun ja täysin tunnustetun Let’s Encrypt -sertifikaatin. Luo sitten PEM-paketti.

Jos ostit varmenteen kaupalliselta varmentajalta, sinun on yhdistettävä yksityinen avain, varmenne ja varmentajan nippu kuvan osoittamalla tavalla.

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

Let’s Encrypt -sertifikaatti, varmenne, yksityinen avain ja koko ketju tallennetaan kohtaan /etc/letsencrypt/live/example.com/, joten luo nippu kuvan mukaisesti.

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

Vaihe 4: Kiinnityksen määrittäminen ja käynnistäminen

5. Määritä seuraavaksi Varnish Hitchin backendiksi ja määritä HTTPS: lle käytettävät SSL/TLS-varmentetiedostot. Avaa Hitchin pääasetustiedostossa muokkausta varten.

# vi /etc/hitch/hitch.conf

Käyttöliittymäosassa määritetään IP-osoitteet ja portit, joita Hitch kuuntelee. Oletusasetuksena on kuunnella kaikkia palvelimelle liitettyjä IPv4- ja IPv6-liitäntöjä, jotka kulkevat portilla 443, ja käsitellä saapuvia HTTPS-pyyntöjä ja luovuttaa ne Varnishille.

Muuta Hitch-määritystiedoston oletusarvoinen backend-välityspalvelinportti arvosta 6086 arvoon 8443 (portti, jota käytetään pyyntöjen edelleenlähettämiseen lakille) taustaparametrin avulla. Määritä myös varmentetiedosto käyttämällä pem-file-parametria kuvan mukaisesti.

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

Tallenna tiedosto ja sulje se.

6. Käynnistä nyt kytkentäpalvelu ja salli se käynnistymään automaattisesti järjestelmän käynnistyksen yhteydessä. Huomaa, että --now -kytkin, kun sitä käytetään käytössä, käynnistää myös systemd-palvelun ja tarkistaa sitten tilan, onko se käynnissä seuraavasti.

# systemctl enable --now hitch
# systemctl status hitch

7. Ennen kuin jatkat sen testaamista, toimiiko verkkosivustosi/sovelluksesi nyt HTTPS: llä, sinun on sallittava palomuurin HTTPS-palveluportin 443 sallia palvelimen kyseiselle portille tarkoitetut pyynnöt kulkea palomuurin läpi.

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

Vaihe 5: SSL/TLS-päätteen testaaminen Varnish Cache-Hitch Setup -ohjelmalla

8. Nyt on aika testata Varnish Cache-Hitch -asennus. Avaa verkkoselain ja siirry HTTPS: n kautta verkkotunnuksesi tai palvelimesi IP-osoitteen avulla.

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

Kun verkkosovelluksesi hakemistosivu on ladattu, tarkista HTTP-otsikot varmistaaksesi, että sisältöä tarjotaan Lakkivälimuisti-välimuistin kautta.

Voit tehdä sen napsauttamalla ladattua verkkosivua hiiren kakkospainikkeella, valitsemalla kehystyökalut valitsemalla vaihtoehtoluettelosta Tarkista. Napsauta sitten Verkko-välilehteä ja lataa sivu uudelleen ja valitse sitten pyyntö tarkastella HTTP-otsikoita, kuten seuraavassa kuvakaappauksessa korostetaan.

Vaihe 6: HTTP: n uudelleenohjaaminen HTTPS: ään lakan välimuistissa

9. Jos haluat käyttää verkkosivustoasi vain HTTPS: llä, sinun on ohjattava kaikki HTTP-liikenne HTTPS: ään. Voit tehdä tämän lisäämällä seuraavan kokoonpanon Hitch-määritystiedostoon.

# vi /etc/hitch/hitch.conf 

Lisää ensin rivi import std; hieman alapuolella vlc 4.0 ;, etsi sitten vlc_recv-alirutiini, joka on ensimmäinen VCL-alirutiini, joka suoritetaan heti sen jälkeen, kun Varnish Cache on jäsennellyt asiakaspyynnön perustietorakenteeseensa. Siellä voimme muokata pyynnön otsikoita ja suorittaa syntetisaation asiakkaan pyyntöjen uudelleenohjaamiseksi.

Muokkaa sitä näyttämään tältä.

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

Huomaa, että PROXY-protokolla antaa Varnishille mahdollisuuden nähdä Hitchin kuunteluportti 443 server.ip-muuttujasta. Joten rivi std.port (server.ip) palauttaa portin numeron, jolle asiakasyhteys vastaanotettiin.

Jos HTTPS-portti ei ole 443 (tarkistettu (vakio.portti (palvelin.ip)! = 443)), alirutiini asettaa pyynnön HTTP-sijaintiotsikon (aseta req.http.location) suojatuksi pyynnöksi (“ https:/”+ req.http.host + req.url) yksinkertaisesti pyytämällä verkkoselainta lataamaan verkkosivun HTTPS-versio (eli URL-uudelleenohjaus).

Sijainti-otsikko lähetetään alijärjestelmään vcl_synth (jota kutsutaan käyttämällä return (synth (301))) HTTP-tilakoodilla 301 (Siirretty pysyvästi).

10. Seuraavaksi lisää seuraava vcl_synth-alirutiini (yksi sen monista käyttötapauksista on käyttäjien uudelleenohjaus) yllä olevan syntetisaattorin käsittelemiseksi.

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

Se tarkistaa, onko vastauksen tila 301, vastauksen HTTP-sijainti-otsikko asetetaan HTTP-sijainti-otsikkoon pyynnössä, joka on itse asiassa uudelleenohjaus HTTPS: ään, ja suorittaa toimitustoiminnon.

Toimitustoiminto rakentaa vastauksen backendin vastauksella, tallentaa vastauksen välimuistiin ja lähettää sen asiakkaalle.

Tallenna tiedosto ja sulje se.

11. Tee uudestaan Lakn-kokoonpanon uudet muutokset käynnistämällä palvelu uudelleen. Käytä sitten curl-komentorivityökalua vahvistaaksesi uudelleenohjauksen HTTP: stä HTTPS: ään.

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

Selaimen vastaus on myös sama kuin seuraavassa kuvakaappauksessa.

Toivomme, että kaikki on toiminut hyvin tähän asti. Jos ei, jätä kommentti tai kysymyksiä alla olevan palautelomakkeen kautta. Jos haluat lisätietoja lisäasetuksista, siirry Hitchin dokumentaatioon.