mTLS の信頼済み証明書の設定

Keycloak に接続するクライアントを検証するために Mutual TLS を設定する方法について説明します。

クライアント証明書を適切に検証し、双方向 TLS や mTLS などの特定の認証方法を有効にするには、サーバーが信頼する必要があるすべての証明書 (および証明書チェーン) を持つトラストストアを設定できます。Mutual TLS や X.509 認証など、証明書を使用してクライアントを適切に認証するために、このトラストストアに依存する機能が多数あります。

mTLS の有効化

mTLS を使用した認証はデフォルトで無効になっています。Keycloak がサーバーであり、Keycloak エンドポイントへのリクエストから証明書を検証する必要がある場合に mTLS 証明書処理を有効にするには、適切な証明書をトラストストアに配置し、次のコマンドを使用して mTLS を有効にします。

bin/kc.[sh|bat] start --https-client-auth=<none|request|required>

値に required を使用すると、Keycloak は常に証明書を要求するように設定され、リクエストに証明書が提供されない場合は失敗します。値を request に設定すると、Keycloak は証明書なしのリクエストも受け入れ、証明書が存在する場合にのみ証明書の正確性を検証します。

mTLS の構成とトラストストアはすべてのレルムで共有されます。異なるレルムに対して異なるトラストストアを構成することはできません。
管理インターフェースのプロパティは、mTLS 設定を含むメインの HTTP サーバーから継承されます。つまり、mTLS が設定されている場合、管理インターフェースでも有効になります。この動作をオーバーライドするには、https-management-client-auth プロパティを使用します。

mTLS 専用のトラストストアの使用

デフォルトでは、Keycloak はシステムトラストストアを使用して証明書を検証します。詳細については、信頼済み証明書の設定 を参照してください。

mTLS 専用のトラストストアを使用する必要がある場合は、次のコマンドを実行してこのトラストストアの場所を構成できます。

bin/kc.[sh|bat] start --https-trust-store-file=/path/to/file --https-trust-store-password=<value>

トラストストアで認識されるファイル拡張子

  • pkcs12 ファイルの場合は .p12.pkcs12、および .pfx

  • jks ファイルの場合は .jks および .truststore

  • pem ファイルの場合は .ca.crt、および .pem

トラストストアの拡張子がファイルタイプと一致しない場合は、https-key-store-type オプションも設定する必要があります。

追加リソース

送信 HTTP リクエストに mTLS を使用する

これは、Keycloak がサーバーとして機能する mTLS ユースケースの基本的な証明書構成であることに注意してください。Keycloak が代わりにクライアントとして機能する場合 (たとえば、Keycloak が mTLS で保護されたブローカー ID プロバイダーのトークンエンドポイントからトークンを取得しようとする場合)、送信リクエストのキーストアで適切な証明書を提供するために HttpClient を設定する必要があります。これらのシナリオで mTLS を構成するには、送信 HTTP リクエストの設定 を参照してください。

X.509 認証の設定

X.509 認証の設定方法の詳細については、X.509 クライアント証明書ユーザー認証 セクションを参照してください。

関連オプション

https-client-auth

クライアント認証を必須/要求するようにサーバーを構成します。

CLI: --https-client-auth
Env: KC_HTTPS_CLIENT_AUTH

none (デフォルト)、requestrequired

https-trust-store-file

信頼する証明書の証明書情報を保持するトラストストア。

CLI: --https-trust-store-file
Env: KC_HTTPS_TRUST_STORE_FILE

https-trust-store-password

トラストストアファイルのパスワード。

CLI: --https-trust-store-password
Env: KC_HTTPS_TRUST_STORE_PASSWORD

https-trust-store-type

トラストストアファイルのタイプ。

指定しない場合、タイプはファイル拡張子に基づいて自動的に検出されます。fips-modestrict に設定されていて、値が設定されていない場合は、デフォルトで BCFKS になります。

CLI: --https-trust-store-type
Env: KC_HTTPS_TRUST_STORE_TYPE

https-management-client-auth

クライアント認証を必須/要求するように管理インターフェースを構成します。

指定しない場合、値は HTTP オプションから継承されます。管理インターフェースで何かを公開する場合にのみ関連します - 詳細についてはガイドを参照してください。

CLI: --https-management-client-auth
Env: KC_HTTPS_MANAGEMENT_CLIENT_AUTH

none (デフォルト)、requestrequired

このページの内容