HAProxy'yi SSL'yi sonlandıracak şekilde yapılandırmaya çalışıyorum, böylece satın alınan SSL sertifikasını yapılandırmak için tek bir yer var. Ancak, arka uç sunucularına bağlantının SSL ile şifrelenmesini de tercih ederim.
Bulduğum bir öneri, arka uç sunucularında kendinden imzalı sertifikalar oluşturmak ve ardından her sunucu satırında "hiçbirini doğrula" olarak ayarlamak. ... Yani tarayıcıdan HAProxy'ye olan bağlantı resmi satın alınan SSL sertifikasını kullanıyor olacaktı, ancak HAProxy ile arka uç sunucularına olan bağlantı kendinden imzalı sertifikaları kullanıyor olacaktı. Kendinden imzalı sertifikaların faydası, ücretsiz olmaları, güncelleme ve bakım gerektirmemeleridir (son kullanma tarihini ileride ayarlayabilir ve her yıl yenilerini yüklemek zorunda kalmam). Ancak, anlaşılır bir şekilde, bu MITM saldırıları için arka uçları açar ve okuduğum bazı kaynaklar tarafından önerilmemektedir.
HAProxy'yi, arka uç sunucularında kendinden imzalı sertifikaları kullanabilmem için ayarlayabilir miyim, ama belki de bir şekilde HAProxy sunucusunda kendinden imzalı sertifikayı beyaz listeye ekleyebilir miyim? ... böylece HAPROxy'nin arka uç bağlantısı şifrelenmiş olacak, MITM saldırılarına açık olmayacaktı ve HAProxy arka uçlu sunucuların kendinden imzalı sertifikaya güveneceğini bilecekti.
Tanımladığım şey mümkün mü? HAProxy SSL sonlandırmasında yeniyim, bu nedenle herhangi bir tavsiye için teşekkür ederiz.
Konfigürasyonumun ilgili kısımları aşağıdaki gibidir:
frontend www-in
bind *:80
bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3
mode http
default_backend https-backend
# force redirect to https
redirect scheme https if !{ ssl_fc }
backend https-backend
balance leastconn
server web1 1.1.1.1:443 check ssl verify none
server web2 2.2.2.2:443 check ssl verify none
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
ca-file
.server
yapılandırma satırı MITM, olası bir saldırganın, başka hiçbir sertifika kabul edilmeyeceğinden eşleşen özel anahtara (yalnızca sunucuda olacak, proxy'ye değil) sahip olmasını gerektirir. Bunu doğrulamaya çalışacağım.