bin/kc.[sh|bat] start --truststore-paths=/opt/truststore/myTrustStore.pfx,/opt/other-truststore/myOtherTrustStore.pem
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 セキュア接続には適用されないことに注意してください。