HAProxy, SSL yapılandırması geçerliyse SSL isteğini işleyebilir. Genellikle akış, isteğin frontend
hizmetini karşılaması ve ardından backend
hizmetine geçmesi şeklindedir. SSL/TLS sertifika tanımı frontend
tarafında görülmektedir. HAProxy'yi yapılandırmadan önce SSL tanımlama stratejilerinin türlerini kontrol edelim.
TLS / SSL Offloading
Bu stratejiyle HAProxy, istemci ile kendisi arasındaki mesajları şifreler, ancak kendisi ile arka uç sunucuları arasındaki iletişim şifrelenmez. SSL/TLS sertifikası HAProxy sunucularında saklanır.
TLS / SSL Passthrough
Bu stratejiyle HAProxy, şifreleme veya şifre çözme işlemini uygulamaz. Bu işlemden backend sunucuları sorumludur. İstek, doğru yönlendirme kuralıyla eşleştirildikten sonra herhangi bir işlem yapılmadan yalnızca backend sunucusuna iletilir.
TLS / SSL Bridging
Bu stratejiyle HAProxy tüm mesajları şifreler. İstek HAProxy'ye ulaşır ve HAProxy, header doğrulama gibi bazı işlemler için isteğin şifresini çözer. Daha sonra istek, backend sunuculara iletilmek üzere HAProxy tarafından şifrelenir. SSL/TLS sertifikası her iki tarafta da, HAProxy ve backend sunucularda tutulmalıdır.
Konfigürasyon
devops@haproxy-01:~$ sudo vi /etc/haproxy/haproxy.conf
...
##################################################
# Frontend #
##################################################
frontend https_in
mode http
bind *:443 ssl crt /etc/haproxy/certificates/certificate-cert-key.pem
...
default_backend be_default
##################################################
##################################################
# Backend #
##################################################
backend be_default
mode http
errorfile 503 /etc/haproxy/errors/503.http
##################################################
...
Yukarıdaki yapılandırmayla HAProxy, SSL / TLS isteklerini işleyebilir ve bunları "arka uç" sunucularına iletebilir. Yapılandırmayı doğrulamadan önce SSL/TLS sertifikasının belirtilen konumda PEM formatında bulunması gerekir. HAProxy, PEM dosyasının genel ve özel anahtarı sırayla içermesini ister. Bu işlem için aşağıdaki komutlar faydalı olabilir.
devops@haproxy-01:~$ sudo su
root@haproxy-01:/home/devops# openssl pkcs12 -in certificate.pfx -nocerts -out certificate_priv.pem -nodes
root@haproxy-01:/home/devops# openssl pkcs12 -in certificate.pfx -nokeys -out certificate_public.pem -nodes
root@haproxy-01:/home/devops# cat certificate_public.pem certificate_priv.pem > certificate-cert-key.pem
root@haproxy-01:/home/devops# mv certificate-cert-key.pem /etc/haproxy/certificates/certificate-cert-key.pem
Komut, önce özel ve genel anahtarları pfx dosyasından çıkarır. Özel ve genel anahtarlarınız ayrı ayrı varsa aşağıdaki talimatları kullanabilirsiniz.
devops@haproxy-01:~$ sudo su
root@haproxy-01:/home/devops# cat certificate_public.pem certificate_priv.pem > certificate-cert-key.pem
root@haproxy-01:/home/devops# mv certificate-cert-key.pem /etc/haproxy/certificates/certificate-cert-key.pem
Bu değişikliği uygulamadan önce yapılandırma dosyasının doğrulanması gerekir.
devops@haproxy-01:~$ sudo /opt/haproxy/sbin/haproxy -c -V -f /etc/haproxy/haproxy.conf
devops@haproxy-01:~$ sudo systemctl reload haproxy
Cluster ortamı var ise konfigürasyonun tüm sunuculara uygulanması gerekmektedir.