Ssl

在 HaProxy 中使用特定後端時,僅需要最低版本的 TLS (1.2)

  • February 10, 2021

我有一個前端,但有多個後端。我正在升級某些後端的安全性,作為其中的一部分,我希望在獲取對這些特定後端的請求時只允許 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 -後端

所以我的 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 訪問伺服器

我試圖通過什麼配置實現的問題是前端和後端之間的流量沒有 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

引用自:https://serverfault.com/questions/1052940