3.9. レルムキーの設定

Red Hat Single Sign-On によって使用される認証プロトコルには、暗号化署名が必要になり、暗号化時があります。Red Hat Single Sign-On では、非対称鍵のペア (秘密鍵と公開鍵) を使用してこれを実現します。

Red Hat Single Sign-On には、同時にアクティブなキーペアが 1 つ含まれますが、複数のパッシブキーを持つこともできます。アクティブなキーペアは新規署名の作成に使用されますが、パッシブキーペアを使用して以前の署名を検証することができます。これにより、ダウンタイムやユーザーの中断なしにキーを定期的にローテーションできます。

レルムが作成されると、キーペアと自己署名証明書が自動的に生成されます。

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys をクリックします。
  4. Passive 鍵を表示するには、Passive をクリックします。
  5. Disabled をクリックして無効なキーを表示します。

キーペアにはステータスが Active になりますが、現在レルムにアクティブなキーペアとして選択されません。署名に使用される選択したアクティブなペアは、優先度別にソートされた最初のキープロバイダーに基づいて選択され、アクティブなキーペアを提供できます。

3.9.1. 鍵のローテーション

鍵を定期的にローテーションすることが推奨されます。既存のアクティブなキーよりも優先度の高い新しいキーを作成することから始めます。代わりに、同じ優先度で新しいキーを作成し、以前のキーをパッシブにすることができます。

新しいキーが利用可能になると、すべての新しいトークンと Cookie が新しいキーで署名されます。ユーザーがアプリケーションに対して認証されると、SSO Cookie が新しい署名で更新されます。OpenID Connect トークンが更新されると、新しいトークンは新しいキーで署名されます。最終的には、すべての Cookie とトークンは新しいキーを使用し、しばらくすると、古いキーを削除できます。

古いキーを削除する頻度は、セキュリティー間のトレードオフであり、すべてのクッキーとトークンが更新されるようにすることです。新しいキーの作成後に、3 カ月から 6 カ月までのすべてのキーを作成し、古いキーを 2 カ月に削除することを検討してください。新しいキーが追加され、古いキーが削除されるまでの期間にユーザーが非アクティブである場合、そのユーザーは再認証する必要があります。

鍵をローテーションすると、オフライントークンにも適用されます。これらのアプリケーションが古いキーが削除される前にトークンを更新する必要のあることを確認するには、アプリケーションを更新します。

3.9.2. 生成されたキーペアの追加

この手順を使用して、自己署名証明書を含むキーペアを生成します。

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys タブをクリックします。
  4. Providers タブをクリックします。
  5. Add keystore をクリックし、rsa-generated を選択します。
  6. Priority フィールドに番号を入力します。この数によって、新しいキーペアがアクティブなキーペアになるかどうかが決まります。数字が大きいほど、キーペアがアクティブになります。
  7. keysize の値を選択します。
  8. Save をクリックします。

プロバイダーの優先度を変更すると、キーが再生成されますが、キーサイズを変更する場合はプロバイダーを編集し、新しいキーが生成されます。

3.9.3. 証明書の抽出によるキーのローテーション

RSA で生成されたキーペアから証明書を抽出し、その証明書を新しいキーストアで使用することにより、キーをローテーションできます。

前提条件

  • 生成されたキーペア

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm Settings をクリックします。
  3. Keys タブをクリックします。

    Active キーのリストが表示されます。

  4. RSA キーのある行で、Public Keys の下の Certificate をクリックします。

    証明書はテキスト形式で表示されます。

  5. 証明書をファイルに保存し、これらの行で囲みます。

    ----Begin Certificate----
    <Output>
    ----End Certificate----
  6. keytool コマンドを使用して、キーファイルを PEM 形式に変換します。
  7. キーストアから現在の RSA 公開鍵証明書を削除します。

    keytool -delete -keystore <keystore>.jks -storepass <password> -alias <key>
  8. 新しい証明書をキーストアにインポートします。

    keytool -importcert -file domain.crt -keystore <keystore>.jks -storepass <password>  -alias <key>
  9. アプリケーションをアンデプロイおよび再構築します。

    wildfly:undeploy
    mvn clean install wildfly:deploy

3.9.4. 既存のキーペアおよび証明書の追加

別のユーザーが取得したキーペアと証明書を追加し、Providers を選択し、ドロップダウンから rsa を選択します。新たなキーペアがアクティブなキーペアになるように、優先度を変更することができます。

前提条件

  • プライベートキーファイル。ファイルは PEM 形式である必要があります。

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys タブをクリックします。
  4. Providers タブをクリックします。
  5. Add keystore をクリックし、rsa を選択します。
  6. Priority フィールドに番号を入力します。この数字は、新しいキーペアがアクティブなキーペアになるかどうかを決定します。
  7. Private RSA Key の横にある Select file をクリックして、秘密鍵ファイルをアップロードします。
  8. 秘密鍵に署名済みの証明書がある場合は、X509 Certificate の横にある Select file をクリックして、証明書ファイルをアップロードします。Red Hat Single Sign-On は、証明書をアップロードしない場合に自己署名証明書を生成します。
  9. Save をクリックします。

3.9.5. Java キーストアからキーを読み込む

ホストの Java キーストアファイルに保存されている鍵と証明書を追加するには、Provider を選択し、ドロップダウンから java-keystore を選択します。新たなキーペアがアクティブなキーペアになるように、優先度を変更することができます。

関連する証明書チェーンをロードするには、キーペアのロードに使用したものと同じ Key Alias を使用して Java キーストアファイルにインポートする必要があります。

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys タブをクリックします。
  4. Providers タブをクリックします。
  5. Add keystore をクリックし、java-keystore を選択します。
  6. Priority フィールドに番号を入力します。この数字は、新しいキーペアがアクティブなキーペアになるかどうかを決定します。
  7. キーストア の値を入力します。
  8. キーストアパスワード の値を入力します。
  9. Key Alias の値を入力します。
  10. Key Password の値を入力します。
  11. Save をクリックします。

3.9.6. 鍵のパッシブの作成

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys タブをクリックします。
  4. Active タブをクリックします。
  5. パッシブに設定するキーのプロバイダーをクリックします。
  6. ActiveOFF に切り替えます。
  7. Save をクリックします。

3.9.7. キーの無効化

手順

  1. 管理コンソールでレルムを選択します。
  2. Realm settings をクリックします。
  3. Keys タブをクリックします。
  4. Active タブをクリックします。
  5. パッシブに設定するキーのプロバイダーをクリックします。
  6. EnabledOFF に切り替えます。
  7. Save をクリックします。

3.9.8. 侵害された鍵

Red Hat Single Sign-On にはローカルに保存された署名キーがあり、クライアントアプリケーション、ユーザー、またはその他のエンティティーと共有されることはありません。ただし、レルム署名鍵が不正であると思われる場合は、上記のように最初に新しいキーペアを生成し、不正アクセスのキーペアを即座に削除する必要があります。

または、プロバイダーを Providers テーブルから削除できます。

手順

  1. メニューで Clients をクリックします。
  2. security-admin-console をクリックします。
  3. Revocation タブをクリックします。
  4. Set to now をクリックします。
  5. Push をクリックします。

not-before ポリシーをプッシュすると、クライアントアプリケーションは、セキュリティー侵害を受けたキーで署名された既存のトークンを受け入れないようにします。クライアントアプリケーションは、Red Hat Single Sign-On から新しいキーペアをダウンロードするように強制され、不正アクセスされた鍵で署名されたトークンが無効になります。

注記

REST および confidential クライアントは Admin URL を設定して、Red Hat Single Sign-On がプッシュされた not-before ポリシー要求にクライアントを送信できます。