8.7. クライアント証明書ルックアップを有効にする
プロキシーが TLS Termination プロキシーとして設定されている場合、クライアント証明書情報は特定の HTTP 要求ヘッダーを通じてサーバーに転送され、クライアントの認証に使用されます。使用しているプロキシーに応じて、サーバーがクライアント証明書情報を取得する方法を設定できます。
サーバーは、次のような最も一般的な TLS Termination プロキシーのいくつかをサポートしています。
Proxy | Provider |
---|---|
Apache HTTP サーバー | apache |
HAProxy | haproxy |
NGINX | nginx |
要求からクライアント証明書を取得する方法を設定するには、以下を実行する必要があります。
対応するプロキシープロバイダーを有効にする
bin/kc.[sh|bat] build --spi-x509cert-lookup-provider=<provider>
HTTP ヘッダーを設定する
bin/kc.[sh|bat] start --spi-x509cert-lookup-<provider>-ssl-client-cert=SSL_CLIENT_CERT --spi-x509cert-lookup-<provider>-ssl-cert-chain-prefix=CERT_CHAIN --spi-x509cert-lookup-<provider>-certificate-chain-length=10
HTTP ヘッダーを設定する際には、使用している値が、プロキシーによってクライアント証明書情報とともに転送されるヘッダーの名前に対応していることを確認する必要があります。
プロバイダーの設定に使用できるオプションは次のとおりです。
オプション | 説明 |
---|---|
ssl-client-cert | クライアント証明書を保持するヘッダーの名前 |
ssl-cert-chain-prefix |
チェーン内の追加の証明書を保持するヘッダーの接頭辞。チェーンの長さに応じて個々の証明書を取得するために使用されます。たとえば |
certificate-chain-length | 証明書チェーンの最大長。 |
trust-proxy-verification | 証明書を Red Hat build of Keycloak に転送して Red Hat build of Keycloak で検証するのではなく、信頼している NGINX プロキシー証明書の検証を有効にします。 |
8.7.1. NGINX プロバイダーを設定する
NGINX SSL/TLS モジュールは、クライアント証明書チェーンを公開しません。Red Hat build of Keycloak の NGINX 証明書ルックアッププロバイダーは、Red Hat build of Keycloak トラストストアを使用してそれを再構築します。
このプロバイダーを使用している場合は、Red Hat build of Keycloak トラストストアを設定する方法について、信頼済み証明書の設定 を参照してください。