CentOS-RHEL 8'de Hitch kullanarak Vernik Önbelleği için HTTPS Nasıl Etkinleştirilir


Varnish Cache, SSL/TLS ve 443 bağlantı noktasıyla ilişkili diğer protokoller için yerel destekten yoksundur. Web uygulamanızın performansını artırmak için Varnish Cache kullanıyorsanız SSL/TLS sonlandırma proxy'si adı verilen başka bir yazılım parçasını yüklemeniz ve yapılandırmanız gerekir. HTTPS'yi etkinleştirmek için >Önbelleği Vernikle.

Hitch, şu anda Linux, OpenBSD, FreeBSD ve MacOSX'te çalışan, Varnish Cache için tasarlanmış ücretsiz bir açık kaynak, libev tabanlı ve ölçeklenebilir SSL/TLS proxy'sidir. 443 bağlantı noktasını (HTTPS bağlantıları için varsayılan bağlantı noktası) dinleyerek TLS/SSL bağlantılarını sonlandırır ve şifrelenmemiş trafiği Varnish Cache'e iletir. , diğer arka uçlarla da çalışmalıdır.

TLS1.2 ve TLS1.3 ile eski TLS 1.0/1.1'i destekler, ALPN'i destekler ( >Uygulama Katmanı Protokol Anlaşması) ve istemciye sinyal göndermek için bir PROXY protokolü olan HTTP/2 için NPN (Sonraki Protokol Anlaşması) Bir arka uca IP/bağlantı noktası, kaynağa UNIX etki alanı soket bağlantıları, joker karakter sertifikaları olan ve olmayan SNI (Sunucu Adı Göstergesi). Ayrıca, 15.000 dinleme soketi ve 500.000 sertifika gerektiren büyük kurulumlarda da iyi çalışır.

Nginx ve Apache HTTP sunucuları için Varnish Cache kurulumuyla ilgili önceki iki makalemizin devamı olarak bu kılavuzda HTTPS<'nin etkinleştirilmesi gösterilmektedir. CentOS/RHEL 8'de Hitch TLS Proxy'yi kullanarak Varnish Cache için.

Bu kılavuz, Nginx veya Apache web sunucusu için Varnish'i yüklediğinizi varsaymaktadır; aksi takdirde, bkz.:

  • CentOS/RHEL 8'de Nginx Web Sunucusu için Varnish Cache 6 Nasıl Kurulur
  • CentOS/RHEL 8'de Apache Web Sunucusu için Varnish Cache 6 Nasıl Kurulur

Adım 1: Hitch'i CentOS/RHEL 8'e yükleyin

1. Hitch paketi, EPEL (Enterprise Linux için Ekstra Paketler) deposunda sağlanır. Yüklemek için öncelikle sisteminizde EPEL'i etkinleştirin ve ardından paketi yükleyin. OpenSSL paketiniz yüklü değilse onu da yükleyin.

dnf install epel-release
dnf install hitch openssl

2. Paket kurulumu tamamlandığında, Varnish Cache'i Hitch'te çalışacak şekilde yapılandırmanız gerekecektir. Ayrıca Hitch'i, SSL/TLS sertifikalarınızı ve Varnish'i arka uç olarak kullanacak şekilde yapılandırmanız gerekir. Hitch'in ana yapılandırma dosyası aşağıda açıklanan /etc/hitch/hitch.conf adresinde bulunur.

Adım 2: Hitch için Vernik Önbelleğini Yapılandırma

3. Ardından, PROXY protokolünü kullanarak ek bir bağlantı noktasını (bizim durumumuzda 8443) dinlemek için Varnish'i etkinleştirin Hitch ile iletişim için destek.

Bu nedenle, düzenleme için Varnish systemd hizmet dosyasını açın.

systemctl edit --full varnish

ExecStart satırını arayın ve 127.0.0.1:8443,proxy değerine sahip ek bir -a bayrağı ekleyin. 127.0.0.1:8443 değerinin kullanılması, Varnish'in yalnızca dahili bağlantıyı (aynı sunucuda çalışan işlemlerden, yani bu durumda bağlantıdan) kabul edeceği, ancak harici bağlantıları kabul etmeyeceği anlamına gelir.

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

Dosyayı kaydedin ve en son değişiklikleri uygulamak için Vernik hizmetini yeniden başlatın.

systemctl restart varnish

3. Adım: SSL/TLS Sertifikalarının Alınması

4. Bu bölümde, Hitch altında kullanılacak SSL/TLS sertifika paketinin nasıl oluşturulacağını açıklayacağız. Bu kılavuzda kendinden imzalı bir sertifikanın, ticari sertifikanın veya Let's Encrypt'ten bir sertifikanın nasıl kullanılacağına ilişkin farklı seçenekleri açıklayacağız.

Kendinden imzalı bir sertifika (yalnızca yerel test ortamında kullanmalısınız) oluşturmak için OpenSSL aracını kullanabilirsiniz.

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

Daha sonra aşağıdaki gibi bir sertifika ve anahtar paketi oluşturun.

cat tecmint.crt tecmint.key >tecmint.pem

Not: Üretimde kullanım için ticari bir Sertifika Yetkilisinden (CA) bir sertifika satın alabilir veya Let's Encrypt'ten ücretsiz, otomatik ve tam tanınan bir sertifika alın. Ardından bir PEM paketi oluşturun.

Ticari bir CA'dan sertifika satın aldıysanız özel anahtarı, sertifikayı ve CA paketini gösterildiği gibi birleştirmeniz gerekir.

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

Let's Encrypt için sertifika, özel anahtar ve tüm zincir /etc/letsencrypt/live/example.com/ altında saklanacaktır; bu nedenle paketi gösterildiği gibi oluşturun .

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

Adım 4: Hitch'i Yapılandırma ve Başlatma

5. Ardından, Varnish'i Hitch için arka uç olarak yapılandırın ve kullanılacak SSL/TLS sertifika dosyalarını belirtin. HTTPS, Hitch ana yapılandırma dosyasında düzenlemek için açın.

vi /etc/hitch/hitch.conf

Ön uç bölümü, Hitch'in dinleyeceği IP adreslerini ve bağlantı noktası'nı tanımlar. Varsayılan yapılandırma, sunucuya bağlı tüm IPv4 ve IPv6 arayüzlerini dinlemek ve 443 bağlantı noktasında çalışmak ve gelen HTTPS<'yi yönetmektir. isteklerini Vernikleme'ye aktarır.

Varsayılan arka uç proxy bağlantı noktasını 6086'dan 8443'e (istekleri Vernik'e iletmek için kullanılan bağlantı noktası) olarak değiştirin. Arka uç parametresini kullanarak Hitch yapılandırma dosyasını kullanın. Ayrıca gösterildiği gibi pem-file parametresini kullanarak sertifika dosyasını belirtin.

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

Dosyayı kaydedin ve kapatın.

6. Şimdi aksılık hizmetini başlatın ve sistem önyüklemesinde otomatik olarak başlatılmasını etkinleştirin. --now anahtarının etkinleştirme ile birlikte kullanıldığında bir systemd hizmetini de başlattığını ve ardından aşağıdaki gibi çalışır durumda olup olmadığını görmek için durumu kontrol ettiğini unutmayın.

systemctl enable --now hitch
systemctl status hitch

7. Web sitenizin/uygulamanızın artık HTTPS üzerinde çalışıp çalışmadığını test etmeye devam etmeden önce, HTTPS hizmet bağlantı noktası 443'e izin vermeniz gerekir. Güvenlik duvarı, sunucudaki o bağlantı noktasına gönderilen isteklerin güvenlik duvarından geçmesine izin verir.

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

Adım 5: Varnish Cache-Hitch Kurulumu ile SSL/TLS Sonlandırmasını Test Etme

8. Artık Varnish Cache-Hitch kurulumunu test etme zamanı geldi. Bir web tarayıcısı açın ve HTTPS üzerinde gezinmek için alan adınızın veya sunucunuzun IP'sini kullanın.

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

Web uygulamanızın dizin sayfası yüklendikten sonra, içeriğin Varnish Cache aracılığıyla sunulduğunu doğrulamak için HTTP başlıklarını kontrol edin.

Bunu yapmak için, yüklenen web sayfasını sağ tıklayın ve geliştirici araçlarını açmak için seçenekler listesinden İncele'yi seçin. Ardından sekmesini tıklayın ve sayfayı Yeniden Yükleyin, ardından aşağıdaki ekran görüntüsünde vurgulandığı gibi HTTP üstbilgilerini görüntülemek için bir istek seçin.

Adım 6: Varnish Cache'de HTTP'yi HTTPS'ye Yönlendirme

9. Web sitenizi yalnızca HTTPS'de çalıştırmak için, tüm HTTP trafiğini HTTPS'ye yönlendirmeniz gerekir. Bunu, Hitch konfigürasyon dosyanıza aşağıdaki konfigürasyonu ekleyerek yapabilirsiniz.

vi /etc/hitch/hitch.conf 

Öncelikle vlc 4.0;'ın hemen altına import std; satırını ekleyin, ardından hemen çalıştırılan ilk VCL alt yordamı olan vlc_recv alt yordamını arayın. Vernik Önbelleği istemci isteğini temel veri yapısına ayrıştırdıktan sonra. İstek başlıklarını değiştirebileceğimiz ve istemci isteklerini yeniden yönlendirmek için bir sentez yürütebileceğimiz yerdir.

Bu şekilde görünecek şekilde değiştirin.

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

PROXY protokolünün Varnish'in server.ip<'ten Hitch'in dinleme bağlantı noktasını 443 görmesine olanak tanıdığını unutmayın. değişken. Dolayısıyla std.port(server.ip) satırı, istemci bağlantısının alındığı bağlantı noktası numarasını döndürür.

Bağlantı noktası HTTPS için 443 değilse ((std.port(server.ip) != 443) tarafından kontrol edildiği gibi), alt rutin istek HTTP Konumu başlığını (set req.http.location) güvenli bir isteğe (“https://” + req.http.host<) ayarlayacaktır. + req.url) yalnızca web tarayıcısından web sayfasının HTTPS sürümünü yüklemesini istemek (ör. URL yönlendirme).

Konum başlığı, vcl_synth alt yordamına (bu, return(synth(301)) kullanılarak çağrılır) HTTP durum koduyla birlikte gönderilir: 301 (Kalıcı olarak taşındı).

10. Ardından, yukarıdaki synth'i işlemek için aşağıdaki vcl_synth alt yordamını ekleyin (birçok kullanım durumundan biri kullanıcıları yeniden yönlendirmektir).

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

Yanıt durumunun 301 olup olmadığını kontrol eder; yanıttaki HTTP Konumu başlığı, aslında HTTPS'ye bir yönlendirme olan ve bir teslim eylemi yürüten istekteki HTTP Konumu başlığına ayarlanmıştır.

Teslim etme işlemi, arka uçtan gelen yanıtla bir yanıt oluşturur, yanıtı önbellekte saklar ve istemciye gönderir.

Dosyayı kaydedin ve kapatın.

11. Hizmeti yeniden başlatarak Vernik yapılandırmasındaki yeni değişiklikleri bir kez daha uygulayın. Ardından, HTTP'den HTTPS'ye yönlendirmeyi onaylamak için curl komut satırı aracını kullanın.

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

Tarayıcıdan gelen yanıt da aşağıdaki ekran görüntüsünde gösterilenle aynıdır.

Bu noktaya kadar her şeyin yolunda gittiğini umuyoruz. Değilse, aşağıdaki geri bildirim formunu kullanarak bir yorum veya soru bırakın. Gelişmiş yapılandırma seçenekleri için Varnish Cache belgelerine ve Hitch belgelerine gidin.