Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule Runtime Engine (Mule) XML 暗号化を使用すると、XML メッセージ全体またはその特定の部分のみを暗号化できます。圧縮を組み合わせた PGP とは異なり、XML 暗号化は XML 構造内のコンテンツの保護に重点を置いています。JCE 暗号化はさまざまなデータに対してより広範な暗号化を提供しますが、XML 暗号化は XML の構造化された性質に合わせて設計されており、特定の要素またはドキュメント全体を正確に暗号化できます。これは、XML メッセージ内の社会保障番号やクレジットカードの詳細などの機密データを保護するのに役立ちます。
暗号化と復号化には、Cryptography Module XML 操作を使用します。
次の手順に従います。
Anypoint Studio で、Cryptography Module XML 操作をキャンバスフローにドラッグします。
操作設定ウィンドウで、既存のモジュール設定を選択するか、[Keystore (キーストア)]、[Type (種別)] (JKS、JCEKS、PKCS12)、および [Password (パスワード)] を設定して新しいモジュール設定を作成します。
署名操作で使用する対称鍵または非対称鍵の情報を追加することもできます。
モジュール設定で以前定義した [Key id (キー ID)] 値を使用して [Key selection (キー選択)] を設定するか、この操作用に新しく定義します。
[Digest Algorithm (ダイジェストアルゴリズム)]、[Canonicalization Algorithm (正規化アルゴリズム)]、[Type (種別)]、および [Element path (要素のパス)] を選択します。
この例では、暗号化に使用される対称鍵を格納するキーストアを設定します。
<crypto:jce-config name="symmetricConfig" keystore="secret.jks" password="mule1234" type="JCEKS">
<crypto:jce-key-infos>
<crypto:jce-symmetric-key-info keyId="mySymKey" alias="aes128test" password="mule1234"/>
</crypto:jce-key-infos>
</crypto:jce-config>
次の例では、Xml encrypt 操作を使用して XML ドキュメントの特定の要素を暗号化します。
<crypto:xml-encrypt config-ref="symmetricConfig" keyId="mySymKey" algorithm="AES_CBC" elementPath="//song"/>
elementPath は、暗号化する要素を識別する XPath 式です。ニーズに応じて、対称鍵または非対称鍵を使用して XML ドキュメントを暗号化できます。
次の例では、復号化を設定します。
<crypto:jce-config name="jceConfig" keystore="keystore.jks" password="mule1234">
<crypto:jce-key-infos>
<crypto:jce-symmetric-key-info keyId="mySymKey" alias="aes128test" password="mule1234"/>
<crypto:jce-asymmetric-key-info keyId="myAsymKey" alias="test1" password="test1234"/>
</crypto:jce-key-infos>
</crypto:jce-config>
次の例では、Xml decrypt 操作で XML ドキュメントを復号化します。この操作では、参照されるキーストアに保存されている非対称鍵を使用します。
<crypto:xml-decrypt config-ref="jceConfig" keyId="myAsymKey"/>
ニーズに応じて、対称鍵または非対称鍵を使用して復号化できます。
次の例は、署名する JCE 設定を示しています。
<crypto:jce-config name="asymmetricConfig" keystore="keystore.jks" password="mule1234">
<crypto:jce-key-infos>
<crypto:jce-asymmetric-key-info keyId="myAsymKey" alias="test1" password="test1234"/>
</crypto:jce-key-infos>
</crypto:jce-config>
次の例では、Xml sign 操作で非対称鍵を使用して XML ドキュメントに署名します (XML エンベロープを作成し、署名されるコンテンツ内に署名を挿入する)。
<crypto:xml-sign config-ref="asymmetricConfig" keyId="myAsymKey" type="ENVELOPING" digestAlgorithm="SHA256" elementPath="/PurchaseOrder/Buyer"/>
次の例では、XML ドキュメントの要素に基づいて、分離された XML 署名が作成されます。分離された署名は、署名されるコンテンツに挿入されずに個別の XML 要素として返されます。
<crypto:xml-sign config-ref="asymmetricConfig" keyId="myAsymKey" type="DETACHED" digestAlgorithm="SHA256" elementPath="/PurchaseOrder/Buyer"/>
Xml Sign 操作では、digestAlgorithm パラメーターによって、署名前にコンテンツに適用されるハッシュアルゴリズム (SHA1、SHA256、SHA512 など) が定義されます。
ただし、最終的な XML 署名アルゴリズムは手動で選択されません。モジュールで設定されたキーの種別 (RSA、DSA、EC、HMAC) に基づいて自動的に決定されます。
署名プロセスでは、選択されたハッシュアルゴリズム digestAlgorithm とキー種別を組み合わせて、XML ドキュメントで使用される署名メソッドを生成します。
例:
digestAlgorithm=SHA256 の RSA キーでは、rsa-sha256 署名メソッドになります。
digestAlgorithm=SHA1 の DSA キーでは、dsa-sha1 署名メソッドになります。
digestAlgorithm=SHA256 の EC キーでは、ecdsa-sha256 署名メソッドになります。
別の署名メソッドを使用する場合は、digestAlgorithm パラメーター設定でキーの種別を変更する必要があります。現在、操作内で署名メソッドを手動で選択することはできません。
次の例は、署名を検証するための JCE 設定を示しています。
<crypto:jce-config name="asymmetricConfig" keystore="keystore.jks" password="mule1234">
<crypto:jce-key-infos>
<crypto:jce-asymmetric-key-info keyId="myAsymKey" alias="test1" password="test1234"/>
</crypto:jce-key-infos>
</crypto:jce-config>
次の例では、非対称鍵を使用して、elementPath XPath 式で指定された XML 要素の署名を検証します。
<crypto:xml-validate config-ref="asymmetricConfig" keyId="myAsymKey" elementPath="/PurchaseOrder/Buyer"/>
ドキュメントに複数の署名が含まれる場合、elementPath を設定して、検証する署名を選択します。XPath 式を使用して署名済み要素を指定して、その要素の署名を検証します。
カスタム名前空間内の XML 要素を署名または検証するには、XPath 関数 ( namespace-uri および local-name) を使用して名前空間を指定します。
たとえば、次のドキュメントについて考えます。
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/">
<FirstElement>
<!-- Some content -->
</FirstElement>
<SecondElement>
<!-- Additional content -->
</SecondElement>
</soap:Envelope>
soap:Envelope 内の FirstElement のコンテンツを対象設定するには、xmlns:soap 名前空間を指定します。xmlns:soap の XML スキーマは http://www.w3.org/2003/05/soap-envelope/ で定義されています。
次の例は、FirstElement を署名するように設定された xml-sign 操作を示しています。
<crypto:xml-sign
config-ref="asymmetricConfig"
keyId="myAsymKey"
type="DETACHED"
digestAlgorithm="SHA256"
elementPath="/*[namespace-uri()='http://www.w3.org/2003/05/soap-envelope/' and local-name()='Envelope']/FirstElement"/>
elementPath 式は xmlns:soap 名前空間を示します。