bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
Transport Layer Security(略称:TLS)は、安全なチャネルを介してデータを交換するために不可欠です。本番環境では、KeycloakエンドポイントをHTTP経由で公開しないでください。機密データは、Keycloakが他のアプリケーションと交換するものの核心部分であるためです。このガイドでは、HTTPS/TLSを使用するようにKeycloakを設定する方法を学習します。
Keycloakは、PEM形式のファイルまたはJavaキーストアから必要な証明書インフラストラクチャをロードするように設定できます。両方の方法が設定されている場合、PEMファイルがJavaキーストアよりも優先されます。
一致する証明書と秘密鍵ファイルのペアをPEM形式で使用する場合、次のコマンドを実行してそれらを使用するようにKeycloakを設定します。
bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
Keycloakは、これらのファイルからインメモリキーストアを作成し、その後このキーストアを使用します。
キーストアファイルが明示的に設定されておらず、http-enabled
がfalseに設定されている場合、Keycloakはconf/server.keystore
ファイルを探します。
代替として、次のコマンドを実行して既存のキーストアを使用できます。
bin/kc.[sh|bat] start --https-key-store-file=/path/to/existing-keystore-file
キーストアの認識されるファイル拡張子
pkcs12ファイルの場合は、.p12
、.pkcs12
、および.pfx
jksファイルの場合は、.jks
および.keystore
pemファイルの場合は、.key
、.crt
、および.pem
キーストアの拡張子がファイルタイプと一致しない場合は、https-key-store-type
オプションも設定する必要があります。
https-key-store-password
オプションを使用して、キーストアの安全なパスワードを設定できます。
bin/kc.[sh|bat] start --https-key-store-password=<value>
パスワードが設定されていない場合、デフォルトのパスワードpassword
が使用されます。
CLIを使用するか、conf/keycloak.conf
ファイルに追加して、パスワードをプレーンテキストで設定することを避けてください。代わりに、Vault/マウントされたシークレットを使用するなど、適切なプラクティスを使用してください。詳細については、Vaultの使用および本番環境向けKeycloakの設定を参照してください。
デフォルトでは、Keycloakは非推奨のTLSプロトコルを有効にしません。クライアントが非推奨のプロトコルのみをサポートしている場合は、クライアントのアップグレードを検討してください。ただし、一時的な回避策として、次のコマンドを実行して非推奨のプロトコルを有効にできます。
bin/kc.[sh|bat] start --https-protocols=<protocol>[,<protocol>]
TLSv1.2も許可するには、次のようなコマンドを使用します:kc.sh start --https-protocols=TLSv1.3,TLSv1.2
。
Keycloakはポート8443
でHTTPSトラフィックをリッスンします。このポートを変更するには、次のコマンドを使用します。
bin/kc.[sh|bat] start --https-port=<port>
デフォルトでは、Keycloakはhttps-*
オプションで指定された証明書、キー、およびキーストアを1時間ごとに再読み込みします。サーバーキーを頻繁にローテーションする必要がある環境では、サーバーを再起動せずにこれを実行できます。https-certificates-reload-period
オプションを使用して、デフォルトをオーバーライドできます。https-*
オプションで参照されるキーストア、トラストストア、および証明書ファイルを再読み込みする間隔。値は、java.time.Duration値、秒単位の整数、または時間単位[ms
、h
、m
、s
、d
]が続く整数にすることができます。30秒より大きくする必要があります。無効にするには-1
を使用します。