3.9. レルムキーの設定
Red Hat Single Sign-On によって使用される認証プロトコルには、暗号化署名が必要になり、暗号化時があります。Red Hat Single Sign-On では、非対称鍵のペア (秘密鍵と公開鍵) を使用してこれを実現します。
Red Hat Single Sign-On には、同時にアクティブなキーペアが 1 つ含まれますが、複数のパッシブキーを持つこともできます。アクティブなキーペアは新規署名の作成に使用されますが、パッシブキーペアを使用して以前の署名を検証することができます。これにより、ダウンタイムやユーザーの中断なしにキーを定期的にローテーションできます。
レルムが作成されると、キーペアと自己署名証明書が自動的に生成されます。
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys をクリックします。
- Passive 鍵を表示するには、Passive をクリックします。
- Disabled をクリックして無効なキーを表示します。
キーペアにはステータスが Active
になりますが、現在レルムにアクティブなキーペアとして選択されません。署名に使用される選択したアクティブなペアは、優先度別にソートされた最初のキープロバイダーに基づいて選択され、アクティブなキーペアを提供できます。
3.9.1. 鍵のローテーション
鍵を定期的にローテーションすることが推奨されます。既存のアクティブなキーよりも優先度の高い新しいキーを作成することから始めます。代わりに、同じ優先度で新しいキーを作成し、以前のキーをパッシブにすることができます。
新しいキーが利用可能になると、すべての新しいトークンと Cookie が新しいキーで署名されます。ユーザーがアプリケーションに対して認証されると、SSO Cookie が新しい署名で更新されます。OpenID Connect トークンが更新されると、新しいトークンは新しいキーで署名されます。最終的には、すべての Cookie とトークンは新しいキーを使用し、しばらくすると、古いキーを削除できます。
古いキーを削除する頻度は、セキュリティー間のトレードオフであり、すべてのクッキーとトークンが更新されるようにすることです。新しいキーの作成後に、3 カ月から 6 カ月までのすべてのキーを作成し、古いキーを 2 カ月に削除することを検討してください。新しいキーが追加され、古いキーが削除されるまでの期間にユーザーが非アクティブである場合、そのユーザーは再認証する必要があります。
鍵をローテーションすると、オフライントークンにも適用されます。これらのアプリケーションが古いキーが削除される前にトークンを更新する必要のあることを確認するには、アプリケーションを更新します。
3.9.2. 生成されたキーペアの追加
この手順を使用して、自己署名証明書を含むキーペアを生成します。
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys タブをクリックします。
- Providers タブをクリックします。
- Add keystore をクリックし、rsa-generated を選択します。
- Priority フィールドに番号を入力します。この数によって、新しいキーペアがアクティブなキーペアになるかどうかが決まります。数字が大きいほど、キーペアがアクティブになります。
- keysize の値を選択します。
- Save をクリックします。
プロバイダーの優先度を変更すると、キーが再生成されますが、キーサイズを変更する場合はプロバイダーを編集し、新しいキーが生成されます。
3.9.3. 証明書の抽出によるキーのローテーション
RSA で生成されたキーペアから証明書を抽出し、その証明書を新しいキーストアで使用することにより、キーをローテーションできます。
前提条件
- 生成されたキーペア
手順
- 管理コンソールでレルムを選択します。
- Realm Settings をクリックします。
Keys タブをクリックします。
Active キーのリストが表示されます。
RSA キーのある行で、Public Keys の下の Certificate をクリックします。
証明書はテキスト形式で表示されます。
証明書をファイルに保存し、これらの行で囲みます。
----Begin Certificate---- <Output> ----End Certificate----
- keytool コマンドを使用して、キーファイルを PEM 形式に変換します。
キーストアから現在の RSA 公開鍵証明書を削除します。
keytool -delete -keystore <keystore>.jks -storepass <password> -alias <key>
新しい証明書をキーストアにインポートします。
keytool -importcert -file domain.crt -keystore <keystore>.jks -storepass <password> -alias <key>
アプリケーションをアンデプロイおよび再構築します。
wildfly:undeploy mvn clean install wildfly:deploy
3.9.4. 既存のキーペアおよび証明書の追加
別のユーザーが取得したキーペアと証明書を追加し、Providers
を選択し、ドロップダウンから rsa
を選択します。新たなキーペアがアクティブなキーペアになるように、優先度を変更することができます。
前提条件
- プライベートキーファイル。ファイルは PEM 形式である必要があります。
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys タブをクリックします。
- Providers タブをクリックします。
- Add keystore をクリックし、rsa を選択します。
- Priority フィールドに番号を入力します。この数字は、新しいキーペアがアクティブなキーペアになるかどうかを決定します。
- Private RSA Key の横にある Select file をクリックして、秘密鍵ファイルをアップロードします。
- 秘密鍵に署名済みの証明書がある場合は、X509 Certificate の横にある Select file をクリックして、証明書ファイルをアップロードします。Red Hat Single Sign-On は、証明書をアップロードしない場合に自己署名証明書を生成します。
- Save をクリックします。
3.9.5. Java キーストアからキーを読み込む
ホストの Java キーストアファイルに保存されている鍵と証明書を追加するには、Provider
を選択し、ドロップダウンから java-keystore
を選択します。新たなキーペアがアクティブなキーペアになるように、優先度を変更することができます。
関連する証明書チェーンをロードするには、キーペアのロードに使用したものと同じ Key Alias
を使用して Java キーストアファイルにインポートする必要があります。
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys タブをクリックします。
- Providers タブをクリックします。
- Add keystore をクリックし、java-keystore を選択します。
- Priority フィールドに番号を入力します。この数字は、新しいキーペアがアクティブなキーペアになるかどうかを決定します。
- キーストア の値を入力します。
- キーストアパスワード の値を入力します。
- Key Alias の値を入力します。
- Key Password の値を入力します。
- Save をクリックします。
3.9.6. 鍵のパッシブの作成
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys タブをクリックします。
- Active タブをクリックします。
- パッシブに設定するキーのプロバイダーをクリックします。
- Active を OFF に切り替えます。
- Save をクリックします。
3.9.7. キーの無効化
手順
- 管理コンソールでレルムを選択します。
- Realm settings をクリックします。
- Keys タブをクリックします。
- Active タブをクリックします。
- パッシブに設定するキーのプロバイダーをクリックします。
- Enabled を OFF に切り替えます。
- Save をクリックします。
3.9.8. 侵害された鍵
Red Hat Single Sign-On にはローカルに保存された署名キーがあり、クライアントアプリケーション、ユーザー、またはその他のエンティティーと共有されることはありません。ただし、レルム署名鍵が不正であると思われる場合は、上記のように最初に新しいキーペアを生成し、不正アクセスのキーペアを即座に削除する必要があります。
または、プロバイダーを Providers
テーブルから削除できます。
手順
- メニューで Clients をクリックします。
- security-admin-console をクリックします。
- Revocation タブをクリックします。
- Set to now をクリックします。
- Push をクリックします。
not-before ポリシーをプッシュすると、クライアントアプリケーションは、セキュリティー侵害を受けたキーで署名された既存のトークンを受け入れないようにします。クライアントアプリケーションは、Red Hat Single Sign-On から新しいキーペアをダウンロードするように強制され、不正アクセスされた鍵で署名されたトークンが無効になります。
REST および confidential クライアントは Admin URL を設定して、Red Hat Single Sign-On がプッシュされた not-before ポリシー要求にクライアントを送信できます。