web-dev-qa-db-ja.com

TLSを終了しながら、HAプロキシを介してクライアント認証証明書を転送するにはどうすればよいですか?

HAプロキシロードバランサーの前にWeb APIがあります。 Web APIは、ID認証と承認にクライアント認証証明書を使用します。 HAプロキシアプライアンスでTLS接続を終了し、バックエンドで通常のHTTPを使用してWeb APIと通信したいのですが、HTTP接続経由でクライアント認証証明書を渡す必要があります。 HTTPのみを使用して、バックエンドからのリクエストで認証証明書を維持するために、HAプロキシをどのように設定する必要がありますか?

2
Matt Hamsmith

提示されたTLSクライアント証明書に関して、バックエンドに送信されるさまざまなHTTPヘッダーを設定できます。例えば:

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でのクライアント証明書の使用に関する追加の役立つ情報が見つかる場合があります。

3
Michael Hampton