33.3 OIFおよびOSTSでのキーおよび証明書の管理とロールオーバー

この章では、キーおよび証明書の管理とロールオーバーにおける次の概念について説明します。
  • 新しいキーと証明書の生成。
  • 新しいキーおよび証明書を使用するためのOracle Identity Federation (OIF)およびOracle Secure Token Service (OSTS)の構成。
  • パートナごとのキー・ロールオーバーの実装。
  • パートナへの新しい証明書の配布。

33.3.1 キーおよび証明書の管理とロールオーバーの概要

Oracle Identity Federation (OIF)/Oracle Secure Token Service (OSTS)では、フェデレーションやWS-Trustプロトコルのやり取りの一部として、公開キー・インフラストラクチャ(PKI)のキーと証明書を使用し、デジタル署名の使用による否認防止や整合性と、デジタル暗号化による機密性を実現しています。

フェデレーション/WS-Trustの交換中に、次のことが行われます:
  • OIF/OSTSでは、独自のPKIキーおよび証明書を使用して、SAMLメッセージに対する署名や復号化操作が実行されます:
    • 送信SAMLメッセージおよびアサーションへの署名は、XMLデジタル署名または問合せ文字列署名を使用して行われます。
    • 受信SAMLアサーションの復号化は、XMLデジタル暗号化を使用して行われます。
  • OIF/OSTSでは、パートナの署名証明書または暗号化証明書を使用して、次のことが行われます:
    • 受信SAMLメッセージおよびアサーション(XMLデジタル暗号化)での署名の検証
    • 送信SAMLアサーションのオプションでの暗号化(XMLデジタル暗号化)
次に、XMLデジタル署名付きのSAMLメッセージの例を示します。
<samlp:Response ...>
<saml:Issuer>hUps://idp.com</saml:Issuer>
<samlp:Status>...</samlp:Status>
<saml:Assertion ...>
<saml:Issuer>https://idp.com</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-excc14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#idhmf9KzAhxleuJ-L3vaVr979Ffa0">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>JGvBqil/NXa6dlMOn5ZhmBbOie8=</DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>VgOrU79ZJO4rzHiFTCDCGNmkb0...Y776QM4vEBBybIpbCCUih7I0aA==
</ds:SignatureValue>
</ds:Signature>
<saml:Subject>
<saml:NameID>alice@acme.com</saml:NameID>
...
</saml:Subject>
...
</saml:Assertion>
</samlp:Response>
次に、問合せ文字列署名付きのSAMLメッセージの例を示します(通常は、AuthnRequestを使用してユーザーをIdPに送信するためにSPによって使用されます)。
https://idp.com
/saml20sso?SAMLRequest=hZJRT8IwFIX%2FStP3sW5BTW7YEhRREtQFplHeytZBQ9fW3i7Kv3cUTdAHfL09t985J3eEvFUWxp3f6o
V47wR68tkqjRAeMto5DYajRNC8FQi%2BguX4YQ7pgIF1xpvKKEom%2FZ7U3EujM7r13iLEsaztoDItJVPjKhEQGW24QkHJbJJRWUfPu
LtTFyuuS7bbsLVcpK92OmdN8XYb9SLETsw0eq59RlOWDCOWRikrkytIhsAuV5QU3x6upa6l3pw3vD6KEO7LsoiKp2VJyYtwGGz3ApqP
DrEhgN1JEee%2F5YjCHbKHqC335%2BWHSZ%2B9CVIQ2ku%2Fp%2FlPaxhKG8UnRo6uLDz2i7NJYZSs9mSslPm4cYJ7kVHvOvE%2FPBk
kf%2BCdRisq2UhR0zg%2FQn9fQ%2F4F&RelayState=id--
mAK1whfUGrvoLqqhU2ysXLWSIw-&SigAlg=hUp%3A%2F
%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&
Signature=S5TZ0uwK9SMZUgBfDaipbNhlLqbbSG9t4rgA9n3%2FwxFsK7H66IoK6G%2BDfaIUvc5bLtTrwmxsa2iB2gjFx8p5
Q6%2FgH8OtFbT7mKZ7z8FihgxxTKjHJ2FQocOEn%2FrkcRKAAq%2Blig5xVSlR%2BzLq1vkQzIMNOrfLw%2FM6uk3i%2Fk54EnQ%3D
SAMLRequest: SAML AuthnRequest message
RelayState: SAML 2.0 Relay State parameter
SigAlg: signature algorithm
Signature: signature bytes covering SAMLRequest, RelayState and SigAlg parameters

OIF/OSTSのPKIキーおよび証明書は、$DOMAIN_HOME/config/fmwconfig/.oamkeystore Javaキーストア・ファイル(このキーストアはJKSではなくJCEKSタイプ)に格納され、OIF/OSTS設定は.oamkeystore内のキー・エントリを参照するため、SAML操作のコンポーネントで使用できます。

33.3.2 キーおよび証明書の生成

Oracle Access Manager (OAM)のインストール・フェーズ中に、キー・ペアと自己署名証明書が生成され、OIF/OSTSは署名や復号化操作にそれらを使用するよう構成されます。キー・ペアおよび自己署名証明書の生成とともに、次の変更が行われます。
  • OAMインストーラにより、.oamkeystoreがランダム・パスワードで作成されます。パスワードのリセット方法の詳細は、「新しいキー・エントリの設定」の項を参照してください。
  • stsprivatekeyaliasという新しいキー・エントリが作成されます。
  • RSAキー・ペアが作成されます。
  • 自己署名証明書が作成されます。
  • SubjectとIssuerがcn=<MACHINE_HOSTNAME>に設定されます。
  • OIF/OSTS構成に、次の2つのエントリが作成されます:
    • .oamkeystorestsprivatekeyaliasキー・エントリを参照するosts_signing
    • .oamkeystorestsprivatekeyaliasキー・エントリを参照するosts_encryption
  • OIFは、署名操作にosts_signingエントリを、復号化操作にosts_encryptionを使用するよう設定されます。
  • OSTSは、復号化操作にosts_encryptionを、SAML発行テンプレートの署名操作にosts_signingを使用するよう設定されます。

33.3.3 新しいキー・エントリの設定

OIF/OSTSで使用する前に、新しいPKIキーと証明書を作成するプロセスは、2ステップのプロセスです。
  1. .oamkeystoreにキー・エントリを作成します
  2. OIF/OSTSにエントリを作成し、.oamkeystoreのキー・エントリを参照します

33.3.3.1 .oamkeystoreへの新しいキー・エントリの作成

.oamkeystoreキーストアのパスワードは管理者にはわからないため、変更する場合はリセットする必要があります。パスワードは、次のWebLogic Scripting Tool (WLST)コマンドを使用してリセットします。
  1. 次を実行して、WLST環境に入ります:
    $IAM_ORACLE_HOME/common/bin/wlst.sh
  2. WLS管理サーバーに接続します:
    connect()
  3. ドメイン・ランタイム・ブランチに移動します:
    domainRuntime()
  4. .oamkeystoreパスワードをリセットします:
    resetKeystorePassword()
  5. WLST環境を終了します:
    exit()
.oamkeystoreに新しいキー・エントリを作成する方法の1つは、JDKのKeyToolアプリケーションを使用することです。この例では、自己署名証明書付きのキー・エントリが2つ作成されますが、1つは別名がsamlsigningで、もう1つの別名はsamlencryptionです($JDK_HOMEおよび$DOMAIN_HOMEを正しいパスに置き換えます。キーストア・パスワードの場合は、リセット操作中に選択したものを入力します):
$JDK_HOME/bin/keytool -genkeypair -alias samlsigning -keyalg RSA -keysize 2048
-sigalg sha1withrsa -dname cn="ACME SAML Signing" -validity 1000 -keystore
$DOMAIN_HOME/conEg/fmwconEg/.oamkeystore -storetype JCEKS
$JDK_HOME/bin/keytool -genkeypair -alias samlencryption -keyalg RSA -keysize
2048 -sigalg sha1withrsa -dname cn="ACME SAML Encryption" -validity 1000
-keystore $DOMAIN_HOME/conEg/fmwconEg/.oamkeystore -storetype JCEKS

33.3.3.2 OIFおよびOSTS設定の更新

SAMLプロトコルの交換中に.oamkeystoreで作成された新しいキー・エントリを使用するには、Oracle Identity Federation (OIF)/Oracle Secure Token Service (OSTS)に新しいSAMLキー・エントリを作成する必要があります。

OIF/OSTSに新しいSAMLキー・エントリを作成するステップは、次のとおりです。
  1. OAM管理コンソールhttp(s)://oam-admin-host:oam-adminport/oamconsoleにログインします。
  2. 「構成」「フェデレーション設定」または「Security Token Serviceの設定」に移動します。
  3. 「キーストア」セクションで「+」ボタンをクリックします
  4. 新しいエントリのKeyIDを入力します(例: saml-signing)
  5. 新しいキー・エントリの別名をドロップダウンで選択します(このドロップダウンには、samlsigningなど、.oamkeystoreのキー・エントリがリストされます)。
  6. そのキーの作成時に設定したキー・エントリのパスワードを入力します。
  7. 必要に応じて、他のエントリに対してプロセスを繰り返します。
  8. 「適用」をクリックします。

    OIF/OSTS設定の更新

    ノート:

    異なるキーIDで、OAMキーストアの同じキー・エントリを参照できます。

33.3.4 新しいキー・エントリを使用したグローバル設定の更新

新しいキーおよび証明書を使用して、SAMLメッセージの署名や復号化を行うには、次の設定を更新する必要があります。
  • グローバルのOracle Identity Federation (OIF)の設定
  • グローバルのOracle Secure Token Service (OSTS)の設定
  • Oracle Secure Token Service (OSTS)の設定

33.3.4.1 グローバルのOIF設定の更新

グローバルのOracle Identification Federation (OIF)の設定を更新するには、次のステップを実行します:
  1. OAM管理コンソールhttps://oam-admin-host:oam-adminport/oamconsoleにログインします
  2. 「構成」「フェデレーション設定」に移動します。
  3. キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、saml-signingを選択します
  4. キー・エントリのドロップダウン・リストで暗号化キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、saml-encryptionを選択します
  5. 「適用」をクリックします。

    ノート:

    設定を適用したら、証明書やSAML 2.0メタデータをパートナに再配布する必要があります。

33.3.4.2 グローバルのOSTS設定の更新

グローバルのOracle Secure Token Service (OSTS)の設定を更新するには、次のステップを実行します:
  1. OAM管理コンソールhttps://oam-admin-host:oam-adminport/oamconsoleにログインします
  2. 「構成」「Security Token Serviceの設定」に移動します。
  3. キー・エントリのドロップダウン・リストから、デフォルトの暗号化テンプレートを選択します(これらのエントリは、「キーストア」セクションに定義されています)。たとえば、saml-encryptionを選択します
  4. 「適用」をクリックします。

    ノート:

    設定を適用したら、証明書をパートナに再配布する必要があります。

33.3.4.3 OSTS設定の更新

Oracle Secure Token Service (OSTS)の設定を更新するには、次のステップを実行します:
  1. OAM管理コンソールhttps://oam-admin-host:oam-adminport/oamconsoleにログインします
  2. 「Security Token Service」「トークン発行テンプレート」に移動します。
  3. 更新するSAML発行テンプレートをクリックします。
  4. 「セキュリティ」タブをクリックします。
  5. キー・エントリのドロップダウン・リストから、「署名キーストア・アクセス・テンプレートID」を選択します(これらのエントリは、「キーストア」セクションに定義されています)。たとえば、saml-signingを選択します
  6. 「適用」をクリックします。

    ノート:

    設定を適用したら、証明書をパートナに再配布する必要があります。

33.3.5 パートナごとのキー・ロールオーバーの管理

OIF/OSTSデプロイメントに多数のパートナが関わっている場合、すべてのパートナに変更を同時に通知し、新しい証明書/SAML 2.0メタデータを反映するようパートナの構成を更新するのは困難な可能性があるため、グローバルの署名/暗号化キー/証明書を一度に調整するのは難しいことがあります。

ノート:

OIF/OSTSのキー/証明書を更新すると、パートナが新しい証明書をシステムにアップロードするまでは、フェデレーション/WS-Trustフローがパートナで機能しなくなります。

OIF/OSTSでは、管理者はパートナごとにキー・ロールオーバーを実行できます。このため、キーと証明書の変更を特定のパートナにいつ、どのように通知するかを計画することが可能です。

OIF IdPまたはSPパートナのキー・ロールオーバーを行うには、次のステップを実行します:
  1. 新しいキーと証明書を設定します。新しいキーと証明書の設定の詳細は、「新しいキー・エントリの設定」を参照してください。
  2. 新しいキーと証明書を使用するよう、OIFでIdPまたはSPパートナ構成を更新します。
  3. 新しいキー/証明書または新しいキー・エントリに対応する新規証明書用専用に生成された新しいSAML 2.0メタデータを使用してパートナに通知します。
OSTSリライイング・パーティ・パートナのキー・ロールオーバーを行うには、次のステップを実行します:
  1. 新しいキーと証明書を設定します。新しいキーと証明書の設定の詳細は、「新しいキー・エントリの設定」を参照してください。
  2. まだない場合:
    • リライイング・パーティ・パートナの現在のリライイング・パーティ・プロファイルをコピーして、新しいリライイング・パーティ・プロファイルを作成します。
    • リライイング・パーティ・パートナが使用する現在のリライイング・パーティ・プロファイルで参照されているSAML発行テンプレートをコピーして、新しいSAML発行テンプレートを作成します。
    • 現在のSAML発行テンプレートではなく、新しいテンプレートを使用するよう、新しいリライイング・パーティ・プロファイルを更新します。
    • 新しいキー/証明書を使用するよう、新しいSAML発行テンプレートを更新します。
    • リライイング・パーティ・パートナを新しいリライイング・パーティ・プロファイルに割り当てます。

ノート:

OIF構成のパートナ・プロファイルを使用して、パートナのグループ全体でOIFキーをロールオーバーできます。

33.3.6 OIFキー・ロールオーバーの管理

特定パートナのOracle Identity Federation (OIF)キー・ロールオーバーの実行には、次のステップが関係します。
  1. WebLogic Scripting Tool (WLST)コマンドを使用して、OIFのアイデンティティ・プロバイダ(IdP)またはサービス・プロバイダ(SP)のパートナ構成を更新します。
  2. SAML 2.0メタデータまたは証明書情報を使用します。
WLSTコマンドを使用して、OIFのIdPまたはSPのパートナ構成を更新するには、次のステップを実行します。
  1. WLST環境に入ります: $IAM_ORACLE_HOME/common/bin/wlst.sh
  2. WLS管理サーバーに接続します: connect()
  3. ドメイン・ランタイム・ブランチに移動します: domainRuntime()
  4. パートナ構成を更新して、署名キー・プロパティ(signingkeystoreaccesstemplateidで参照)を「フェデレーション設定」「キーストア」セクションに定義されているキー・エントリIDに設定します。

    この例では、saml-signingがキー・エントリIDです。

    <PARTNER_NAME>をOIFのパートナの名前に置き換えます。

    <IDP_OR_SP>をパートナのタイプ(IDPまたはSP)に置き換えます。
    updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>",
     "signingkeystoreaccesstemplateid", "saml-signing", "string")
  5. パートナ構成を更新して、暗号化キー・プロパティ(encryptionkeystoreaccesstemplateidで参照)を「フェデレーション設定」「キーストア」セクションに定義されているキー・エントリIDに設定します。

    この例では、saml-encryptionがキー・エントリIDです。

    <PARTNER_NAME>をOIFのパートナの名前に置き換えます。

    <IDP_OR_SP>をパートナのタイプ(IDPまたはSP)に置き換えます。
    updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>",
     "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
  6. WLST環境を終了します: exit()

パートナ構成が更新されたら、パートナはSAML 2.0メタデータまたは証明書情報を生成する必要があります。

新しい署名および暗号化キーのSAML 2.0メタデータを生成するには、次のステップを実行します。
  1. 新しいブラウザを開き、次のURLを使用してメタデータを生成します。

    http://oam-runtime-host:oam-runtime-port/oamfed/idp/metadata?signid= <SIGN_KEYENTRY_ID>&encid=<ENC_KEYENTRY_ID>

    signid問合せパラメータには、署名証明書のキー・エントリIDが含まれます。<SIGN_KEYENTRY_ID>を置き換えます。

    encid問合せパラメータには、暗号化証明書のキー・エントリIDが含まれます。<SIGN_KEYENTRY_ID>を置き換えます。

    例: http://oam.com/oamfed/idp/metadata?signid=saml-signing&encid=samlencryption

新しいキーの証明書ファイルを生成するには、次のステップを実行します。
  1. 新しいブラウザを開き、次のURLを使用してPEM形式で証明書を生成します。

    http://oam-runtime-host:oam-runtime-port/oamfed/idp/cert?id=<KEYENTRY_ID>

    id問合せパラメータには、証明書のキー・エントリIDが含まれます。<KEYENTRY_ID>を置き換えます。

    例: http://oam.com/oamfed/idp/cert?id=saml-signing

ノート:

先にSAML 2.0メタデータ/証明書を生成し、パートナに提供してから、パートナ構成を更新できます。

33.3.7 OSTSキー・ロールオーバーの管理

OSTSキー・ロールオーバーについて説明する例を次に示します:
  • 3つのリライイング・パーティ・パートナ: RP1RP2およびRP3
  • 2つのリライイング・パーティ・プロファイル: RPprofileAおよびRPprofileB (RPprofileARP1RP2が使用し、RPprofileBRP3が使用)
  • 2つのSAML 2.0発行テンプレート: SAMLIssuaneARPprofileAが参照し、SAMLIssuanceBRPprofileBが参照

ロールオーバーでは、最初にRP1を切り替えてから、RP2RP3が続きます。

RP1を切り替えるには、次のステップを実行します。
  1. OAM管理コンソールhttps://oam-admin-host:oam-adminport/oamconsoleにログインします。
  2. 「Security Token Service」「パートナ・プロファイル」「リライイング・パーティ・プロファイル」に移動します。
  3. RPprofileAのコピーであるNewRPprofileAという新しいリライイング・パーティ・プロファイルを作成します。
  4. 「Security Token Service」「トークン発行テンプレート」に移動します。
  5. SAMLIssuanceAのコピーであるNewSAMLIssuanceAという新しいSAML発行テンプレートを作成します。
  6. NewSAMLIssuanceA SAML 2.0発行テンプレートを参照するよう、NewRPprofileAを更新します。


    NewProfileAの更新

  7. 新しいキー・エントリを使用するよう、「セキュリティ」タブで、NewSAMLIssuanceA SAML 2.0発行テンプレートを更新します。


    NewSAMLIssuanceAの更新

  8. 「Security Token Service」「パートナ」「リライイング・パーティ」に移動します。

    この結果、OSTSでは、新しいキー・エントリsaml-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。
    RP1リライイング・パートナ

  9. OSTSから新しい証明書をダウンロードするには、ブラウザを開き、次のURLを使用してPEM形式で証明書を生成します:

    http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>

    id問合せパラメータには、証明書のキー・エントリIDが含まれます。<KEYENTRY_ID>を置き換えます。

    例: http://oam.com/sts/servlet/samlcert?id=saml-signing

  10. 証明書をパートナに渡します。

新しいリライイング・パーティ・プロファイルとSAML発行テンプレートがすでに存在するため、RP2を新しい証明書に切り替えるプロセスはさらに簡単です。

RP2を切り替えるには、次のステップを実行します。
  1. OAM管理コンソールhttps://oam-admin-host:oam-adminport/oamconsoleにログインします。
  2. 「Security Token Service」「パートナ」「リライイング・パーティ」に移動します。
  3. RP1を開き、NewRPprofileAリライイング・パーティ・プロファイルを使用するよう構成します。

    この結果、OSTSでは、新しいキー・エントリsaml-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。

  4. 証明書をパートナに渡します。
RP3の新しいリライイング・パーティ・プロファイルとSAML発行テンプレートはまだ作成されていないため、RP3を新しい証明書に切り替えるには、RP1で前に実行した操作を繰り返す必要があります。

ノート:

先に新しい証明書をパートナに渡してから、OSTS構成を更新できます。