我有一个前端,但有多个后端。我正在升级某些后端的安全性,作为升级的一部分,我希望在向这些特定后端发出请求时仅允许 TLS1.2 或更高版本。仍有客户在使用其他后端,所以现在我不想打扰他们。
我有一个配置,类似于下面的配置。我尝试在后端设置“ssl-min-ver”,还尝试向后端添加“no-ssl3 no-tls10 no-tls11”选项,但这显然是无效的。
所以我的问题是,如何实现当使用后端“api-test”时,需要最低版本的 TLS 1.2,而其他两个后端不受影响?
这是我指的配置:
frontend frontend_ssl
bind *:443 ssl crt /certificate.[somename].com.pem crt /etc/haproxy/certificates/
acl is_api_[somename]_com hdr(host) -i api.[somename].com
acl is_api_[somename]_test hdr(host) -i test-api.[somename].com
use_backend api_prod if is_api_[somename]_com
use_backend api_test if is_api_[somename]_test
default_backend app_iis_http_4430
backend app_iis_http_4430
server dk1h1iis 10.10.1.1:4430 check port 4430
server dk1h2iis 10.10.1.2:4430 check port 4430
backend api_prod
server dk1h1docker_prod 10.10.1.1:855 check port 855
server dk1h2docker_prod 10.10.1.2:855 check port 855
backend api_test
server dk1h1docker_test 10.10.1.1:856 check port 856
server dk1h2docker_test 10.10.1.2:856 check port 856
编辑:我已经尝试过此处文档中提到的选项:https://cdn.haproxy.com/documentation/hapee/1-8r2/traffic-management/tls/#define-server-directive-settings-on-the-backend
所以我的 api-test 后端现在看起来像这样:
backend api_test
server dk1h1docker_test 10.10.1.1:856 no-sslv3 no-tlsv10 no-tlsv11 check port 856
server dk1h2docker_test 10.10.1.2:856 no-sslv3 no-tlsv10 no-tlsv11 check port 856
但这没用。我仍然可以通过 TLS1.0 访问服务器
答案1
我试图实现的目标以及我所拥有的配置存在的问题是,前端和后端之间的流量没有 SSL/TLS,因此无法限制到任何版本。
相反,我现在检查前端,使用 ACL,并拒绝使用弃用版本的 http 请求。
acl is_api_test hdr(host) -i test-api.[somename].com
acl is_ssl_version_deprecated ssl_fc_protocol SSLv3 TLSv1 TLSv1.1
http-request reject if is_api_test is_ssl_version_deprecated