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)のキーと証明書を使用し、デジタル署名の使用による否認防止や整合性と、デジタル暗号化による機密性を実現しています。
- OIF/OSTSでは、独自のPKIキーおよび証明書を使用して、SAMLメッセージに対する署名や復号化操作が実行されます:
- 送信SAMLメッセージおよびアサーションへの署名は、XMLデジタル署名または問合せ文字列署名を使用して行われます。
- 受信SAMLアサーションの復号化は、XMLデジタル暗号化を使用して行われます。
- OIF/OSTSでは、パートナの署名証明書または暗号化証明書を使用して、次のことが行われます:
- 受信SAMLメッセージおよびアサーション(XMLデジタル暗号化)での署名の検証
- 送信SAMLアサーションのオプションでの暗号化(XMLデジタル暗号化)
<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>
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 キーおよび証明書の生成
- OAMインストーラにより、
.oamkeystore
がランダム・パスワードで作成されます。パスワードのリセット方法の詳細は、「新しいキー・エントリの設定」の項を参照してください。 stsprivatekeyalias
という新しいキー・エントリが作成されます。- RSAキー・ペアが作成されます。
- 自己署名証明書が作成されます。
- SubjectとIssuerが
cn=<MACHINE_HOSTNAME>
に設定されます。 - OIF/OSTS構成に、次の2つのエントリが作成されます:
.oamkeystore
のstsprivatekeyalias
キー・エントリを参照するosts_signing
。.oamkeystore
のstsprivatekeyalias
キー・エントリを参照するosts_encryption
。
- OIFは、署名操作に
osts_signing
エントリを、復号化操作にosts_encryption
を使用するよう設定されます。 - OSTSは、復号化操作に
osts_encryption
を、SAML発行テンプレートの署名操作にosts_signing
を使用するよう設定されます。
33.3.3 新しいキー・エントリの設定
.oamkeystore
にキー・エントリを作成します- OIF/OSTSにエントリを作成し、
.oamkeystore
のキー・エントリを参照します
33.3.3.1 .oamkeystoreへの新しいキー・エントリの作成
.oamkeystore
キーストアのパスワードは管理者にはわからないため、変更する場合はリセットする必要があります。パスワードは、次のWebLogic Scripting Tool (WLST)コマンドを使用してリセットします。
- 次を実行して、WLST環境に入ります:
$IAM_ORACLE_HOME/common/bin/wlst.sh
- 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/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キー・エントリを作成する必要があります。
- OAM管理コンソール
http(s)://oam-admin-host:oam-adminport/oamconsole
にログインします。 - 「構成」、「フェデレーション設定」または「Security Token Serviceの設定」に移動します。
- 「キーストア」セクションで「+」ボタンをクリックします
- 新しいエントリのKeyIDを入力します(例:
saml-signing
) - 新しいキー・エントリの別名をドロップダウンで選択します(このドロップダウンには、
samlsigning
など、.oamkeystore
のキー・エントリがリストされます)。 - そのキーの作成時に設定したキー・エントリのパスワードを入力します。
- 必要に応じて、他のエントリに対してプロセスを繰り返します。
- 「適用」をクリックします。
ノート:
異なるキーIDで、OAMキーストアの同じキー・エントリを参照できます。
33.3.4 新しいキー・エントリを使用したグローバル設定の更新
- グローバルのOracle Identity Federation (OIF)の設定
- グローバルのOracle Secure Token Service (OSTS)の設定
- Oracle Secure Token Service (OSTS)の設定
33.3.4.1 グローバルのOIF設定の更新
- OAM管理コンソール
https://oam-admin-host:oam-adminport/oamconsole
にログインします - 「構成」、「フェデレーション設定」に移動します。
- キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-signing
を選択します - キー・エントリのドロップダウン・リストで暗号化キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-encryption
を選択します - 「適用」をクリックします。
ノート:
設定を適用したら、証明書やSAML 2.0メタデータをパートナに再配布する必要があります。
33.3.4.2 グローバルのOSTS設定の更新
- OAM管理コンソール
https://oam-admin-host:oam-adminport/oamconsole
にログインします - 「構成」、「Security Token Serviceの設定」に移動します。
- キー・エントリのドロップダウン・リストから、デフォルトの暗号化テンプレートを選択します(これらのエントリは、「キーストア」セクションに定義されています)。たとえば、
saml-encryption
を選択します - 「適用」をクリックします。
ノート:
設定を適用したら、証明書をパートナに再配布する必要があります。
33.3.4.3 OSTS設定の更新
- OAM管理コンソール
https://oam-admin-host:oam-adminport/oamconsole
にログインします - 「Security Token Service」、「トークン発行テンプレート」に移動します。
- 更新するSAML発行テンプレートをクリックします。
- 「セキュリティ」タブをクリックします。
- キー・エントリのドロップダウン・リストから、「署名キーストア・アクセス・テンプレートID」を選択します(これらのエントリは、「キーストア」セクションに定義されています)。たとえば、
saml-signing
を選択します - 「適用」をクリックします。
ノート:
設定を適用したら、証明書をパートナに再配布する必要があります。
33.3.5 パートナごとのキー・ロールオーバーの管理
ノート:
OIF/OSTSのキー/証明書を更新すると、パートナが新しい証明書をシステムにアップロードするまでは、フェデレーション/WS-Trustフローがパートナで機能しなくなります。OIF/OSTSでは、管理者はパートナごとにキー・ロールオーバーを実行できます。このため、キーと証明書の変更を特定のパートナにいつ、どのように通知するかを計画することが可能です。
- 新しいキーと証明書を設定します。新しいキーと証明書の設定の詳細は、「新しいキー・エントリの設定」を参照してください。
- 新しいキーと証明書を使用するよう、OIFでIdPまたはSPパートナ構成を更新します。
- 新しいキー/証明書または新しいキー・エントリに対応する新規証明書用専用に生成された新しいSAML 2.0メタデータを使用してパートナに通知します。
- 新しいキーと証明書を設定します。新しいキーと証明書の設定の詳細は、「新しいキー・エントリの設定」を参照してください。
- まだない場合:
- リライイング・パーティ・パートナの現在のリライイング・パーティ・プロファイルをコピーして、新しいリライイング・パーティ・プロファイルを作成します。
- リライイング・パーティ・パートナが使用する現在のリライイング・パーティ・プロファイルで参照されているSAML発行テンプレートをコピーして、新しいSAML発行テンプレートを作成します。
- 現在のSAML発行テンプレートではなく、新しいテンプレートを使用するよう、新しいリライイング・パーティ・プロファイルを更新します。
- 新しいキー/証明書を使用するよう、新しいSAML発行テンプレートを更新します。
- リライイング・パーティ・パートナを新しいリライイング・パーティ・プロファイルに割り当てます。
ノート:
OIF構成のパートナ・プロファイルを使用して、パートナのグループ全体でOIFキーをロールオーバーできます。33.3.6 OIFキー・ロールオーバーの管理
- WebLogic Scripting Tool (WLST)コマンドを使用して、OIFのアイデンティティ・プロバイダ(IdP)またはサービス・プロバイダ(SP)のパートナ構成を更新します。
- SAML 2.0メタデータまたは証明書情報を使用します。
- WLST環境に入ります:
$IAM_ORACLE_HOME/common/bin/wlst.sh
- WLS管理サーバーに接続します:
connect()
- ドメイン・ランタイム・ブランチに移動します:
domainRuntime()
- パートナ構成を更新して、署名キー・プロパティ(
signingkeystoreaccesstemplateid
で参照)を「フェデレーション設定」の「キーストア」セクションに定義されているキー・エントリIDに設定します。この例では、
saml-signing
がキー・エントリIDです。<PARTNER_NAME>
をOIFのパートナの名前に置き換えます。<IDP_OR_SP>
をパートナのタイプ(IDPまたはSP)に置き換えます。updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "signingkeystoreaccesstemplateid", "saml-signing", "string")
- パートナ構成を更新して、暗号化キー・プロパティ(
encryptionkeystoreaccesstemplateid
で参照)を「フェデレーション設定」の「キーストア」セクションに定義されているキー・エントリIDに設定します。この例では、
saml-encryption
がキー・エントリIDです。<PARTNER_NAME>
をOIFのパートナの名前に置き換えます。<IDP_OR_SP>
をパートナのタイプ(IDPまたはSP)に置き換えます。updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
- WLST環境を終了します:
exit()
パートナ構成が更新されたら、パートナは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メタデータ/証明書を生成し、パートナに提供してから、パートナ構成を更新できます。33.3.7 OSTSキー・ロールオーバーの管理
- 3つのリライイング・パーティ・パートナ:
RP1
、RP2
およびRP3
- 2つのリライイング・パーティ・プロファイル:
RPprofileA
およびRPprofileB
(RPprofileA
はRP1
とRP2
が使用し、RPprofileB
はRP3
が使用) - 2つのSAML 2.0発行テンプレート:
SAMLIssuaneA
はRPprofileA
が参照し、SAMLIssuanceB
はRPprofileB
が参照
ロールオーバーでは、最初にRP1
を切り替えてから、RP2
とRP3
が続きます。
RP1
を切り替えるには、次のステップを実行します。
- OAM管理コンソール
https://oam-admin-host:oam-adminport/oamconsole
にログインします。 - 「Security Token Service」、「パートナ・プロファイル」、「リライイング・パーティ・プロファイル」に移動します。
RPprofileA
のコピーであるNewRPprofileA
という新しいリライイング・パーティ・プロファイルを作成します。- 「Security Token Service」、「トークン発行テンプレート」に移動します。
SAMLIssuanceA
のコピーであるNewSAMLIssuanceA
という新しいSAML発行テンプレートを作成します。NewSAMLIssuanceA
SAML 2.0発行テンプレートを参照するよう、NewRPprofileA
を更新します。
- 新しいキー・エントリを使用するよう、「セキュリティ」タブで、
NewSAMLIssuanceA
SAML 2.0発行テンプレートを更新します。
- 「Security Token Service」、「パートナ」、「リライイング・パーティ」に移動します。
この結果、OSTSでは、新しいキー・エントリ
saml-signing
を使用して、RP1リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。 - 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
- 証明書をパートナに渡します。
新しいリライイング・パーティ・プロファイルとSAML発行テンプレートがすでに存在するため、RP2
を新しい証明書に切り替えるプロセスはさらに簡単です。
RP2
を切り替えるには、次のステップを実行します。
- OAM管理コンソール
https://oam-admin-host:oam-adminport/oamconsole
にログインします。 - 「Security Token Service」、「パートナ」、「リライイング・パーティ」に移動します。
RP1
を開き、NewRPprofileA
リライイング・パーティ・プロファイルを使用するよう構成します。この結果、OSTSでは、新しいキー・エントリsaml-signingを使用して、
RP1
リライイング・パーティ・パートナの送信SAML 2.0アサーションに署名します。- 証明書をパートナに渡します。
RP3
の新しいリライイング・パーティ・プロファイルとSAML発行テンプレートはまだ作成されていないため、RP3
を新しい証明書に切り替えるには、RP1
で前に実行した操作を繰り返す必要があります。
ノート:
先に新しい証明書をパートナに渡してから、OSTS構成を更新できます。