Ssl

req.ssl_sni 的 haproxy 日誌記錄

  • March 1, 2019

我正在嘗試通過添加來擴展自定義 haproxy 日誌格式

$$ req.ssl_sni $$. 在 Ubuntu 上使用的 haproxy 版本是 1.6.3。 前端配置如下:

bind *:443
mode tcp

tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
tcp-request content reject

log-format [...]{%[req.ssl_sni]}

Where[...]表示其他執行良好的日誌選項。前端在 TCP 模式下執行,在不解密的情況下轉發 TLS 會話。

預期的日誌輸出類似於{my.server.com}有效的 TLS 會話。我看到的日誌輸出始終是{-}(一個破折號而不是伺服器名稱),即使後端伺服器成功處理了 TLS 會話。我必須更改什麼才能在日誌中查看實際的 SNI 值?

在接受之前使用擷取為我解決了這個問題。

frontend https-in
 mode tcp
 tcp-request inspect-delay 3s
 tcp-request content capture req.ssl_sni len 10
 log-format "capture0: %[capture.req.hdr(0)]"
 tcp-request content accept if { req_ssl_hello_type 1 }
 use_backend test_0 if req.ssl_sni -m end /test

在這裡找到解決方案:https ://discourse.haproxy.org/t/log-sni-in-tcp-mode/1534/2

也許問題出在使用的名稱上?我在問題中看到“req.ssl_sni”,在 SNI 的範例中看到“req_ssl_sni”。

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