web-dev-qa-db-ja.com

req.ssl_sniのhaproxyロギング

[req.ssl_sni]を追加して、カスタムhaproxyログ形式を拡張しようとしています。使用されるhaproxyバージョンはUbuntuでは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]}

ここで、[...]は、正常に機能している他のログオプションを示します。フロントエンドはTCPモードで実行されており、TLSセッションを復号化せずに転送します。

予想されるログ出力は、有効なTLSセッションの{my.server.com}のようなものになります。私が見ているログ出力は、TLSセッションがバックエンドサーバーによって正常に処理された場合でも、常に{-}(サーバー名の代わりにダッシュ)です。ログに実際のSNI値を表示するには、何を変更する必要がありますか?

1
Cybran

受け入れる前にキャプチャを使用すると、解決しました。

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

2
DTT

たぶん問題は使用された名前にありましたか?質問に「req.ssl_sni」が表示され、SNIの例に「req_ssl_sni」が表示されます。

0
peroksid