Haproxy
如何在終止 TLS 時通過 HA 代理轉發客戶端身份驗證證書?
我有一個由 HA 代理負載平衡器前端的 Web API。Web API 使用客戶端認證證書進行身份認證和授權。我希望 HA 代理設備終止 TLS 連接並在後端使用普通 HTTP 與 Web API 對話,但我需要通過 HTTP 連接傳遞的客戶端身份驗證證書。需要如何設置 HA 代理以將請求中的身份驗證證書保留在後端之外,但僅使用 HTTP?
您可以設置各種 HTTP 標頭以發送到有關所提供的 TLS 客戶端證書的後端。例如:
frontend intranet bind 10.20.30.40:443 ssl crt /etc/haproxy/pem/server.pem ca-file /etc/haproxy/pem/client-chain.pem verify required http-request set-header X-SSL %[ssl_fc] http-request set-header X-SSL-Client-Verify %[ssl_c_verify] http-request set-header X-SSL-Client-SHA1 %{+Q}[ssl_c_sha1] http-request set-header X-SSL-Client-DN %{+Q}[ssl_c_s_dn] http-request set-header X-SSL-Client-CN %{+Q}[ssl_c_s_dn(cn)] http-request set-header X-SSL-Issuer %{+Q}[ssl_c_i_dn] http-request set-header X-SSL-Client-Not-Before %{+Q}[ssl_c_notbefore] http-request set-header X-SSL-Client-Not-After %{+Q}[ssl_c_notafter] default_backend your_backend
然後,您的應用程序必須檢查標頭並採取適當的措施。
此範例取自raymii.org,您可以在其中找到一些有關將客戶端證書與 HAProxy 一起使用的其他有用資訊,例如驗證客戶端證書和拒絕無效證書。