信頼された証明書の設定

TLS を介して通信するための Keycloak トラストストアの設定方法。

Keycloak が外部サービスと通信したり、TLS を介してインバウンド接続がある場合、信頼できるサーバーに接続していることを保証するために、リモート証明書を検証する必要があります。これは、中間者攻撃を防ぐために必要です。

これらのクライアントまたはサーバーの証明書、あるいはこれらの証明書に署名した CA は、トラストストアに配置する必要があります。このトラストストアは、Keycloak で使用するように設定されます。

システムトラストストアの設定

既存の Java デフォルトトラストストア証明書は常に信頼されます。JRE で認識されない自己署名または内部認証局がある場合など、追加の証明書が必要な場合は、conf/truststores ディレクトリまたはサブディレクトリに含めることができます。証明書は PEM ファイル、または拡張子 .p12.pfx、または .pkcs12 の PKCS12 ファイルにすることができます。PKCS12 の場合、証明書は暗号化されていない必要があります - つまり、パスワードは不要です。

代替パスが必要な場合は、--truststore-paths オプションを使用して、PEM または PKCS12 ファイルが配置されている追加のファイルまたはディレクトリを指定します。パスは Keycloak を起動した場所からの相対パスであるため、代わりに絶対パスを使用することをお勧めします。ディレクトリが指定された場合、トラストストアファイルが再帰的にスキャンされます。

該当するすべての証明書が含まれた後、トラストストアは javax.net.ssl プロパティを介してシステムデフォルトトラストストアとして、また Keycloak 内の内部使用のデフォルトとして使用されます。

bin/kc.[sh|bat] start --truststore-paths=/opt/truststore/myTrustStore.pfx,/opt/other-truststore/myOtherTrustStore.pem

独自の javax.net.ssl トラストストアシステムプロパティを直接設定することも可能ですが、代わりに --truststore-paths を使用することをお勧めします。

ホスト名検証ポリシー

tls-hostname-verifier プロパティを使用して、TLS 接続でホスト名がどのように検証されるかを調整できます。

  • DEFAULT (デフォルト) は、サブドメイン名 (例: *.foo.com) でワイルドカードを使用して、同じレベル数の名前 (例: a.foo.com、ただし a.b.foo.com ではない) に一致させることを許可します - https://publicsuffix.org/list/ に基づくパブリックサフィックスのルールと除外付き。

  • ANY は、ホスト名が検証されないことを意味します。

  • WILDCARD (非推奨) は、サブドメイン名 (例: *.foo.com) でワイルドカードを使用して、複数レベル (例: a.b.foo.com) を含むすべてに一致させることを許可します。代わりに DEFAULT を使用してください。

  • STRICT (非推奨) は、サブドメイン名 (例: *.foo.com) でワイルドカードを使用して、同じレベル数の名前 (例: a.foo.com、ただし a.b.foo.com ではない) に一致させることを許可します - いくつかの限定的な除外付き。代わりに DEFAULT を使用してください。

    この設定は、厳密なホスト名チェックを必要とする LDAP セキュア接続には適用されないことに注意してください。

関連オプション

tls-hostname-verifier

送信する HTTPS および SMTP リクエストの TLS ホスト名検証ポリシー。

CLI: --tls-hostname-verifier
Env: KC_TLS_HOSTNAME_VERIFIER

STRICT および WILDCARD は非推奨になりました。代わりに DEFAULT を使用してください。非推奨の値: STRICT, WILDCARD

ANY, WILDCARD (非推奨), STRICT (非推奨), DEFAULT (デフォルト)

truststore-paths

システムトラストストアとして使用される pkcs12 (p12、pfx、または pkcs12 ファイル拡張子)、PEM ファイル、またはそれらのファイルを含むディレクトリのリスト。

CLI: --truststore-paths
Env: KC_TRUSTSTORE_PATHS

このページの内容