仅当 HaProxy 中使用特定后端时才需要最低版本的 TLS (1.2)

仅当 HaProxy 中使用特定后端时才需要最低版本的 TLS (1.2)

我有一个前端,但有多个后端。我正在升级某些后端的安全性,作为升级的一部分,我希望在向这些特定后端发出请求时仅允许 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

相关内容