OAMおよびSTSでのキーおよび証明書の管理とロールオーバー

イントロダクション

フェデレーションおよびWS- Trustプロトコルの対話の一環として、OAM/OSTSは、デジタル暗号化によるデジタル署名および機密性の使用によって、否認および整合性のないPKIキーおよび証明書を使用する必要があります。

この記事では、キーと証明書の管理について、次の方法について説明します。

フェデレーション/WS- Trust交換では、次の処理が実行されます。

XMLデジタル署名を使用したSAMLメッセージの例:

 <samlp:Response ...>
   <saml:Issuer>https://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#rsasha1"/>
         <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%2FStP3sW5BTW7YEhRREtQFplHeytZBQ9fW3i7Kv3cUTdAHfL09t985J3eEvFUV47wR68tkqjRAeMto5DYajRNC8FQi%2BguX4YQ7pgIF1xpvKKEom%2FZ7U3EujM7r13iLEsaztoDItJVPjKhEQGW24QkHJbLtTFyuuS7bbsLVcpK92OmdN8XYb9SLETsw0eq59RlOWDCOWRikrkytIhsAuV5QU3x6upa6l3pw3vD6KEO7LsoiKp2VJyYtDrEhgN1JEee%2F5YjCHbKHqC335%2BWHSZ%2B9CVIQ2ku%2Fp%2FlPaxhKG8UnRo6uLDz2i7NJYZSs9mSslPm4cYJ7kVkf%2BCdRisq2UhR0zg%2FQn9fQ%2F4F&RelayState=id-mAK1whfUGrvoLqqhU2ysXLWSIw-&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=S5TZ0uwK9SMZUgBfDaipbNhlLqbbSG9t4rgA9n3%2FwxFsK7H66IoK6G%2BDfaIUvc5bLtTrwmxsa2iB2gjFx8pQ6%2FgH8OtFbT7mKZ7z8FihgxxTKjHJ2FQocOEn%2FrkcRKAAq%2Blig5xVSlR%2BzLq1vkQzIMNOrfLw%2FM6uk3i%2Fk

SAMLRequest: SAML AuthnRequestメッセージ

RelayState: SAML 2.0リレー状態パラメータ

SigAlg: 署名アルゴリズム

Signature: SAMLRequest、RelayStateおよびSigAlgパラメータをカバーする署名バイト

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

インストール

OAMのインストール・フェーズでは、キー・ペアと自己署名証明書が生成され、署名および復号化操作に使用するようにOAM/OSTSが構成されます。

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

OAM/OSTSで使用する前に、新しいPKIキーおよび証明書を作成するプロセスは2つあります。

ノート: キーおよび証明書は.oamkeystoreに格納する必要があります。HSMはサポートされていません。

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

前述のように、.oamkeystoreキーストアのパスワードは管理者には不明であり、変更するにはリセットする必要があります。この操作は、WLSTコマンドを介して実行します。

  1. $IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。

  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/config/fmwconfig/.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/config/fmwconfig/.oamkeystore -storetype JCEKS

OAM/OSTS設定の更新

キー・エントリが.oamkeystoreで作成されたら、SAMLプロトコルの交換中にキーを使用する前に、新しいSAMLキー・エントリをOAM/OSTSで作成する必要があります。

OAM/OSTSに新しいSAMLキー・エントリを作成するには:

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「構成」「フェデレーション設定」または「セキュリティ・トークン・サービス設定」に移動します。

  3. エントリを新規作成します。

    1. 「キーストア」セクションで「+」ボタンをクリックします。

    2. 新しいエントリのKeyIDを入力します(例: saml-signing)。

    3. .oamkeystoreのキー・エントリがリストされたドロップダウンから、新しいキー・エントリの別名を選択します(例: samlsigning)。

    4. 前のセクションで、そのキーの作成時に設定したキー・エントリのパスワードを入力します。

    5. 必要に応じて、他のエントリに対してプロセスを繰り返します。

  4. 「適用」をクリックします。

図Federation_Settings.jpgの説明

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

新しいキー・エントリの使用

グローバル設定

新しいキーおよび証明書を使用してSAMLメッセージの署名および復号化を行うようにグローバルOAM設定を更新するには、次の操作を実行します。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-admin-port/oamconsole)にアクセスします。

  2. 「構成」「連邦設定」に移動します。

  3. キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、saml-signingを選択します。

  4. キー・エントリのドロップダウン・リストで暗号化キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、saml-encryptionを選択します。

  5. 「適用」をクリックします。

ノート: 適用後に、証明書またはSAML 2.0 Metadata(あるいはその両方)をパートナに再配布する必要がある場合があります)

図Global_Settings.jpgの説明

新しいキーおよび証明書を使用してSAMLメッセージを復号化するようにグローバルOSTS設定を更新するには、次の操作を実行します:

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「構成」「セキュリティ・トークン・サービス設定」に移動します。

  3. キー・エントリのドロップダウン・リストでデフォルトの暗号化テンプレートを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、samlencryptionを選択します。

  4. 「適用」をクリックします。

ノート: 適用後、パートナに証明書を再配布する必要がある場合があります

図Security_Token_Service_Settings.jpgの説明

新しいキーおよび証明書を使用してSAMLメッセージに署名するようにOSTS設定を更新するには、次の操作を実行します:

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-admin- port/oamconsole)にアクセスします。

  2. 「セキュリティ・トークン・サービス」「トークン発行テンプレート」にナビゲートします。

  3. 更新するSAML発行テンプレートをクリックします。

  4. 「セキュリティ」タブをクリックします。

  5. キー・エントリのドロップダウン・リストで「署名キーストア・アクセス・テンプレートID」を選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、saml-signingを選択します。

  6. 「適用」をクリックします。

ノート: 適用後、パートナに証明書を再配布する必要がある場合があります

図Issuance_Template.jpgの説明

パートナ当たりのキー・ロールオーバー

OAM/OSTSデプロイメントが多数のパートナに関係している場合、グローバル署名/暗号化キー/証明書を一度に変更するのは困難です。これは、すべてのパートナに変更を同時に通知し、新しい証明書/SAML 2.0メタデータを使用して構成を更新する必要があるためです。

ノート: OAM/OSTSのキー/証明書を更新した後、フェデレーション/WS- Trustフローは、新しい証明書をシステムにアップロードするまでパートナと連携しません。

OAM/OSTSでは、パートナごとにキー・ロールオーバーを簡単に実行できるため、OAM管理者は、キーおよび証明書の変更を特定のパートナに通知する方法とタイミングを計画できます。

ノート: OAMキー・ロールオーバーは、OAM構成のパートナ・プロファイルを使用して、パートナのグループを介して実行できます。

OAMキー・ロールオーバー

特定のパートナのキー・ロールオーバーを実行する場合は、まずWLSTコマンドを使用してOAMのIdPまたはSPパートナ構成を更新する必要があります。

  1. $IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。

  2. WLS管理サーバー(connect())に接続します。

  3. 「ドメイン・ランタイム」ブランチdomainRuntime()に移動します。

  4. パートナ構成を更新して、「署名キー」プロパティ(signingkeystoreaccesstemplateidで参照)を「フェデレーション設定」の「キーストア」セクションで定義されたキー・エントリIDに設定します(この例では、saml-signingはキー・エントリIDです。<PARTNER_NAME>をOAM内のパートナの名前に置き換えます。<IDP_OR_SP>をIDPまたはSPに置き換えます(パートナのタイプ)。

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

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

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

ノート: パートナ構成を更新する前に、まずSAML 2.0 Metadata/Certificateを生成し、パートナに提供できます。

OSTSキー・ロールオーバー

OSTSキー・ロールオーバーを説明するには、次の例を考えます。

ロールオーバーは、最初にRP1、次にRP2、次にRP3を切り替えて、それらのパートナが新しいsaml-signing証明書を使用するようにします。

RP1を切り替えるには、次の操作を実行する必要があります。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-admin- port/oamconsole)にアクセスします。

  2. 「セキュリティ・トークン・サービス」「パートナ・プロファイル」「リライイング・パーティ・プロファイル」にナビゲートします。

  3. RPprofileAのコピーであるNewRPprofileAという新規リライイング・パーティ・プロファイルを作成します。

  4. 「セキュリティ・トークン・サービス」「トークン発行テンプレート」にナビゲートします。

  5. NewSAMLIssuanceAという新しいSAML発行テンプレートを作成し、SAMLIssuanceAのコピーを作成します。

  6. NewRPprofileAを更新して、NewSAMLIssuanceA SAML 2.0発行テンプレートを参照します。

  7. 図New_RPProfile_A.jpgの説明

  8. 「セキュリティ」タブのNewSAMLIssuanceA SAML 2.0発行テンプレートを更新して、新しいキー・エントリを使用します。
  9. 図New_SAMLIssuanceA.jpgの説明

  10. 「セキュリティ・トークン・サービス」「パートナ」「リライイング・パーティ」にナビゲートします。

  11. RP1を開き、NewRPprofileAリライイング・パーティ・プロファイルを使用するように構成します。その後、OSTSは新しいキー・エントリSAML-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。

  12. 画像の説明 Configure_RP1.jpg

  13. ブラウザを開いてOSTSから新しい証明書をダウンロードし、次のURLを使用してPEM形式で証明書を生成します。
  14. http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>

  15. ID問合せパラメータには、証明書のキー・エントリIDが含まれます。

  16. <KEYENTRY_ID>を置き換えます。

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

  18. パートナに証明書を指定してください。

新しいリライイング・パーティ・プロファイルおよびSAML発行テンプレートがすでに作成されているため、RP2を新しい証明書に切り替える方が高速です。

RP2を切り替えるには、次の操作を実行する必要があります。

  1. OAM管理コンソール(http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。

  2. 「セキュリティ・トークン・サービス」「パートナ」「リライイング・パーティ」にナビゲートします。

  3. RP1を開き、NewRPprofileAリライイング・パーティ・プロファイルを使用するように構成します。その後、OSTSは新しいキー・エントリSAML-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。

  4. パートナに証明書を指定してください。

RP3の新しい証明書への切替えは、RP3の新しいリライイング・パーティ・プロファイルおよびSAML発行テンプレートがまだ作成されていないため、RP1に対して実行された操作の繰返しで構成されます。

ノート: OSTS構成を更新する前に、パートナに新しい証明書を提供できます。

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。