OAMおよびSTSでのキーおよび証明書の管理とロールオーバー
イントロダクション
フェデレーションおよびWS- Trustプロトコルの対話の一環として、OAM/OSTSは、デジタル暗号化によるデジタル署名および機密性の使用によって、否認および整合性のないPKIキーおよび証明書を使用する必要があります。
この記事では、キーと証明書の管理について、次の方法について説明します。
-
新しい鍵と証明書を生成
-
新しいキーおよび証明書を使用するようにOAMおよびOSTSを構成します。
-
パートナごとのキー・ロールオーバーの実装
-
パートナへの新規証明書の配布
フェデレーション/WS- Trust交換では、次の処理が実行されます。
-
OAM/OSTSは独自のPKIキーおよび証明書を使用して、SAMLメッセージに対して署名および復号化操作を実行します。
-
送信SAMLメッセージおよびアサーションの署名(XMLデジタル署名または問合せ文字列署名)
-
受信SAMLアサーションの復号化(XMLデジタル暗号化)
-
OAM/OSTSは、パートナの署名証明書または暗号化証明書を使用して次のことを行います。
-
受信SAMLメッセージとアサーション(XML)の署名の検証
-
送信SAMLアサーション(XMLデジタル暗号化)の暗号化(オプション)
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インストーラは、ランダム・パスワードを使用して.oamkeystoreを作成します(パスワードのリセット方法については、「新しいキー・エントリの設定」の項を参照してください)。
-
stsprivatekeyaliasという新しいキー・エントリが作成されました -
RSA鍵ペア
-
自己署名証明書
-
「件名」および「発行者」を
cn=\<MACHINE_HOSTNAME\>に設定します -
OAM/OSTS構成には、次の2つのエントリが作成されます。
-
.oamkeystoreの
stsprivatekeyaliasキー・エントリを参照するosts_signing -
.oamkeystoreの
stsprivatekeyaliasキー・エントリを参照するosts_encryption -
OAMは、署名操作に
osts_signingエントリを使用し、復号化操作にosts_encryptionを使用するように設定されています。 -
OSTSは、復号化操作に
osts_encryptionを使用し、SAML発行テンプレートでの署名操作にosts_signingを使用するように設定されています
新しいキー・エントリの設定
OAM/OSTSで使用する前に、新しいPKIキーおよび証明書を作成するプロセスは2つあります。
-
.oamkeystoreでのキー・エントリの作成 -
.oamkeystoreのキー・エントリを参照するためのOAM/OSTSへのエントリの作成
ノート: キーおよび証明書は.oamkeystoreに格納する必要があります。HSMはサポートされていません。
.oamkeystoreでの新しいキー・エントリの作成
前述のように、.oamkeystoreキーストアのパスワードは管理者には不明であり、変更するにはリセットする必要があります。この操作は、WLSTコマンドを介して実行します。
-
$IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect())に接続します。 -
「ドメイン・ランタイム」ブランチ
domainRuntime()に移動します。 -
.oamkeystoreパスワードをリセットします:
resetKeystorePassword()。 -
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キー・エントリを作成するには:
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。 -
「構成」、「フェデレーション設定」または「セキュリティ・トークン・サービス設定」に移動します。
-
エントリを新規作成します。
-
「キーストア」セクションで「+」ボタンをクリックします。
-
新しいエントリのKeyIDを入力します(例:
saml-signing)。 -
.oamkeystoreのキー・エントリがリストされたドロップダウンから、新しいキー・エントリの別名を選択します(例:
samlsigning)。 -
前のセクションで、そのキーの作成時に設定したキー・エントリのパスワードを入力します。
-
必要に応じて、他のエントリに対してプロセスを繰り返します。
-
-
「適用」をクリックします。

ノート: OAMキーストアの同じキー・エントリを異なるキーIDで参照できます
新しいキー・エントリの使用
グローバル設定
新しいキーおよび証明書を使用してSAMLメッセージの署名および復号化を行うようにグローバルOAM設定を更新するには、次の操作を実行します。
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-admin-port/oamconsole)にアクセスします。 -
「構成」→「連邦設定」に移動します。
-
キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-signingを選択します。 -
キー・エントリのドロップダウン・リストで暗号化キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-encryptionを選択します。 -
「適用」をクリックします。
ノート: 適用後に、証明書またはSAML 2.0 Metadata(あるいはその両方)をパートナに再配布する必要がある場合があります)

新しいキーおよび証明書を使用してSAMLメッセージを復号化するようにグローバルOSTS設定を更新するには、次の操作を実行します:
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。 -
「構成」、「セキュリティ・トークン・サービス設定」に移動します。
-
キー・エントリのドロップダウン・リストでデフォルトの暗号化テンプレートを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
samlencryptionを選択します。 -
「適用」をクリックします。
ノート: 適用後、パートナに証明書を再配布する必要がある場合があります

図Security_Token_Service_Settings.jpgの説明
新しいキーおよび証明書を使用してSAMLメッセージに署名するようにOSTS設定を更新するには、次の操作を実行します:
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-admin- port/oamconsole)にアクセスします。 -
「セキュリティ・トークン・サービス」、「トークン発行テンプレート」にナビゲートします。
-
更新するSAML発行テンプレートをクリックします。
-
「セキュリティ」タブをクリックします。
-
キー・エントリのドロップダウン・リストで「署名キーストア・アクセス・テンプレートID」を選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-signingを選択します。 -
「適用」をクリックします。
ノート: 適用後、パートナに証明書を再配布する必要がある場合があります

パートナ当たりのキー・ロールオーバー
OAM/OSTSデプロイメントが多数のパートナに関係している場合、グローバル署名/暗号化キー/証明書を一度に変更するのは困難です。これは、すべてのパートナに変更を同時に通知し、新しい証明書/SAML 2.0メタデータを使用して構成を更新する必要があるためです。
ノート: OAM/OSTSのキー/証明書を更新した後、フェデレーション/WS- Trustフローは、新しい証明書をシステムにアップロードするまでパートナと連携しません。
OAM/OSTSでは、パートナごとにキー・ロールオーバーを簡単に実行できるため、OAM管理者は、キーおよび証明書の変更を特定のパートナに通知する方法とタイミングを計画できます。
-
OAM IdPまたはSPパートナのキー・ロールオーバーの実行には、次のものが含まれます。
-
前のセクションで説明した新しい鍵と証明書の設定。
-
新しいキーおよび証明書を使用するように、OAMのIdPまたはSPパートナ構成を更新します。
-
新しいキー/証明書または新しいキー・エントリに対応する新しい証明書で具体的に生成された新しいSAML 2.0 Metadataをパートナに通知します。
-
-
OSTSリライイング・パーティ・パートナのキー・ロールオーバーの実行には、次のものが含まれます。
-
前のセクションの説明に従って新しい鍵と証明書を設定します(まだ設定されていない場合)。
-
新しいリライイング・パーティ・プロファイルを作成します。これは、リライイング・パーティ・パートナによって使用される現在のリライイング・パーティ・プロファイルのコピーになります。
-
新規SAML発行テンプレートの作成、リライイング・パーティ・パートナによって使用される現在リライイング・パーティ・プロファイルによって参照されるSAML発行テンプレートのコピー。
-
新しいリライイング・パーティ・プロファイルを更新して、現在のSAML発行テンプレートのかわりに新しいSAML発行テンプレートを使用します。
-
-
新しいキー/証明書を使用するように新しいSAML発行テンプレートを更新
-
新しいリライイング・パーティ・プロファイルへのリライイング・パーティ・パートナの割当
ノート: OAMキー・ロールオーバーは、OAM構成のパートナ・プロファイルを使用して、パートナのグループを介して実行できます。
OAMキー・ロールオーバー
特定のパートナのキー・ロールオーバーを実行する場合は、まずWLSTコマンドを使用してOAMのIdPまたはSPパートナ構成を更新する必要があります。
-
$IAM_ORACLE_HOME/common/bin/WLST.shを実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect())に接続します。 -
「ドメイン・ランタイム」ブランチ
domainRuntime()に移動します。 -
パートナ構成を更新して、「署名キー」プロパティ(
signingkeystoreaccesstemplateidで参照)を「フェデレーション設定」の「キーストア」セクションで定義されたキー・エントリIDに設定します(この例では、saml-signingはキー・エントリIDです。<PARTNER_NAME>をOAM内のパートナの名前に置き換えます。<IDP_OR_SP>をIDPまたはSPに置き換えます(パートナのタイプ)。 - パートナ構成を更新して、「暗号化キー」プロパティ(
encryptionkeystoreaccesstemplateidで参照)を「フェデレーション設定」の「キーストア」セクションで定義されたキー・エントリIDに設定します(この例では、saml- encryptionはキー・エントリIDです。<PARTNER_NAME>をOAMのパートナの名前に置き換えます。<IDP_OR_SP>をIDPまたはSPに置き換えます(パートナのタイプ)。 - WLST環境
exit()を終了します。
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
パートナ構成が更新されると、パートナはSAML 2.0メタデータまたは証明書情報を使用する必要があります。この情報を生成するには:
-
新しい署名および暗号化キーにSAML 2.0メタデータを提供する必要がある場合は、ブラウザを開き、次の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。 -
新しいキーの証明書ファイルを指定する必要がある場合は、ブラウザを開き、次の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 Metadata/Certificateを生成し、パートナに提供できます。
OSTSキー・ロールオーバー
OSTSキー・ロールオーバーを説明するには、次の例を考えます。
-
3つのリライイング・パーティ・パートナ: RP1、RP2およびRP3
-
2つのリライイング・パーティ・プロファイル:
RPprofileAおよびRPprofileB。RP1およびRP2はRPprofileAを使用し、RP3はRPprofileBを使用します。 -
2つのSAML 2.0発行テンプレート(
RPprofileAによって参照されるSAMLIssuanceAおよびRPprofileBによって参照されるSAMLIssuanceB)
ロールオーバーは、最初にRP1、次にRP2、次にRP3を切り替えて、それらのパートナが新しいsaml-signing証明書を使用するようにします。
RP1を切り替えるには、次の操作を実行する必要があります。
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-admin- port/oamconsole)にアクセスします。 -
「セキュリティ・トークン・サービス」、「パートナ・プロファイル」、「リライイング・パーティ・プロファイル」にナビゲートします。
-
RPprofileAのコピーであるNewRPprofileAという新規リライイング・パーティ・プロファイルを作成します。 -
「セキュリティ・トークン・サービス」、「トークン発行テンプレート」にナビゲートします。
-
NewSAMLIssuanceAという新しいSAML発行テンプレートを作成し、SAMLIssuanceAのコピーを作成します。 -
NewRPprofileAを更新して、NewSAMLIssuanceASAML 2.0発行テンプレートを参照します。 - 「セキュリティ」タブの
NewSAMLIssuanceASAML 2.0発行テンプレートを更新して、新しいキー・エントリを使用します。 -
「セキュリティ・トークン・サービス」、「パートナ」、「リライイング・パーティ」にナビゲートします。
-
RP1を開き、
NewRPprofileAリライイング・パーティ・プロファイルを使用するように構成します。その後、OSTSは新しいキー・エントリSAML-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。 - ブラウザを開いてOSTSから新しい証明書をダウンロードし、次のURLを使用してPEM形式で証明書を生成します。
-
ID問合せパラメータには、証明書のキー・エントリIDが含まれます。
-
<KEYENTRY_ID>を置き換えます。 - パートナに証明書を指定してください。



http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>
例: http://oam.com/sts/servlet/samlcert?id=saml-signing
新しいリライイング・パーティ・プロファイルおよびSAML発行テンプレートがすでに作成されているため、RP2を新しい証明書に切り替える方が高速です。
RP2を切り替えるには、次の操作を実行する必要があります。
-
OAM管理コンソール(
http(s)://OAM-admin-host:OAM-adminport/oamconsole)に移動します。 -
「セキュリティ・トークン・サービス」、「パートナ」、「リライイング・パーティ」にナビゲートします。
-
RP1を開き、
NewRPprofileAリライイング・パーティ・プロファイルを使用するように構成します。その後、OSTSは新しいキー・エントリSAML-signingを使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。 -
パートナに証明書を指定してください。
RP3の新しい証明書への切替えは、RP3の新しいリライイング・パーティ・プロファイルおよびSAML発行テンプレートがまだ作成されていないため、RP1に対して実行された操作の繰返しで構成されます。
ノート: OSTS構成を更新する前に、パートナに新しい証明書を提供できます。
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Key and Certificate Management-Rollover in OAM and STS
F61370-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.