XML 暗号化

Anypoint Studio からの XML 暗号化の設定

Anypoint Studio から XML 暗号化を設定するには、次の手順に従います。

  1. [Mule Palette (Mule パレット)] から、​[Crypto (暗号化)]​ をプロジェクトに追加します。

    手順は、​「拡張機能のインストール」​を参照してください。

  2. 目的の操作を選択し、コンポーネントをフローにドラッグします。

    crypto-xml-add
  3. コンポーネントプロパティを開いて、既存の​モジュール設定​を選択するか、​[Keystore (キーストア)]​、​[Type (種別)]​ (JKS、JCEKS、PKCS12)、および ​[Password (パスワード)]​ を指定して新しいモジュール設定を作成します。

    署名操作で使用する対称キーまたは非対称キーの情報を追加することもできます。

    crypto-jce-global-config
  4. モジュール設定で以前定義した ​[Key id (キー ID)]​ 値を使用して ​[Key selection (キー選択)]​ を設定するか、この操作用に新しく定義します。

    crypto-xml-config
  5. [Digest Algorithm (ダイジェストアルゴリズム)]​、​[Canonicalization Algorithm (正規化アルゴリズム)]​、​[Type (種別)]​、および ​[Element path (要素のパス)]​ を選択します。

暗号化

この例では、後で暗号化に使用される対称キーを格納するキーストアを設定します。

例: JCE 設定
<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 ドキュメントの特定の要素を暗号化します。

例: Encrypt 操作の使用
<crypto:xml-encrypt config-ref="symmetricConfig" keyId="mySymKey" algorithm="AES_CBC" elementPath="//song"/>

elementPath​ は、暗号化する要素を識別する XPath 式です。 ニーズに応じて、対称キーまたは非対称キーを使用して XML ドキュメントを暗号化できます。

復号化

例: JCE 設定
<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 操作 (​crypto:xml-decrypt​) を使用して XML ドキュメントを復号化します。この操作では、参照されるキーストアに保存されている非対称キーを使用します。

例: Decrypt 操作の使用
<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 ドキュメントに署名します (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"/>

署名の検証

例: 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 要素の署名を検証します。

例: Validate 操作の使用
<crypto:xml-validate config-ref="asymmetricConfig" keyId="myAsymKey" elementPath="/PurchaseOrder/Buyer"/>

ドキュメントに複数の署名が含まれる場合、​elementPath​ を設定して、検証する署名を選択します。XPath 式を使用して署名済み要素を指定して、その要素の署名を検証します。

elementPath を使用したカスタム名前空間の対象設定

カスタム名前空間内の 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​ 名前空間を示します。

参照

モジュール設定

XML ドキュメントや要素を署名または暗号化するための Java キーストアおよびインラインキーの JCE 設定。

パラメーター

名前 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x​ 

Keystore (キーストア)

String (文字列)

キーストアファイルへのパス。

 

Type (種別)

Enumeration (列挙)。次のいずれかになります。

  • JKS

  • JCEKS

  • PKCS12

キーストアの種別。

JKS

 

Password (パスワード)

String (文字列)

キーストアのロックを解除するパスワード。

 

Jce Key Infos (JCE キー情報)

対象となるキーのリスト。これらの参照には内部 ID が使用されます。

 

Expiration Policy (有効期限ポリシー)

動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Runtime で期限切れに相当するとみなされます。これは、対象になった瞬間にプラットフォームでインスタンスの有効期限が切れるという意味ではありません。ランタイムによって適切と判断されたときに、インスタンスが実際にパージされます。

 

Xml Decrypt 操作

<crypto:xml-decrypt>

XML ドキュメントを復号化します。

パラメーター

名前 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x​ 

Content (コンテンツ)

Binary (バイナリ)

復号化するドキュメント

#[payload]

 

Streaming Strategy (ストリーミング戦略)

反復可能ストリームを使用すべきかどうか、およびその動作を設定します。

 

Key Id (キー ID)

String (文字列)

JCE 設定で定義されるキー ID。

 

Jce Key Info (JCE キー情報)

インラインキー定義。

 

Target Variable (対象変数)

String (文字列)

操作の出力が格納される変数の名前

 

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

 

出力型

Binary (バイナリ)

スロー

  • CRYPTO:MISSING_KEY​  

  • CRYPTO:KEY​  

  • CRYPTO:PASSPHRASE​  

  • CRYPTO:PARAMETERS​  

  • CRYPTO:DECRYPTION​  

Xml Encrypt 操作

<crypto:xml-encrypt>

XML ドキュメントを暗号化します。

パラメーター

名前 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x​ 

Content (コンテンツ)

Binary (バイナリ)

暗号化するドキュメント

#[payload]

 

Algorithm (アルゴリズム)

Enumeration (列挙)。次のいずれかになります。

  • AES_CBC

  • AES_GCM

  • TRIPLEDES

暗号化のアルゴリズム

AES_CBC

 

Element Path (要素のパス)

String (文字列)

暗号化する要素へのパス。空の場合、ドキュメント全体が対象になります。

 

Streaming Strategy (ストリーミング戦略)

反復可能ストリームを使用すべきかどうか、およびその動作を設定します。

 

Key Id (キー ID)

String (文字列)

JCE 設定で定義されるキー ID。

 

Jce Key Info (JCE キー情報)

インラインキー定義。

 

Target Variable (対象変数)

String (文字列)

操作の出力が格納される変数の名前

 

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

 

出力型

Binary (バイナリ)

スロー

  • CRYPTO:MISSING_KEY​  

  • CRYPTO:ENCRYPTION​  

  • CRYPTO:KEY​  

  • CRYPTO:PARAMETERS​  

Xml Sign 操作

<crypto:xml-sign>

XML ドキュメントに署名します。

パラメーター

名前 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x​ 

Content (コンテンツ)

Binary (バイナリ)

署名する XML ドキュメント

#[payload]

 

Digest Algorithm (ダイジェストアルゴリズム)

Enumeration (列挙)。次のいずれかになります。

  • RIPEMD160

  • SHA1

  • SHA256

  • SHA512

署名のハッシュアルゴリズム

SHA256

 

Canonicalization Algorithm (正規化アルゴリズム)

Enumeration (列挙)。次のいずれかになります。

  • EXCLUSIVE

  • EXCLUSIVE_WITH_COMMENTS

  • INCLUSIVE

  • INCLUSE_WITH_COMMENTS

空白と名前空間の統合の正規化方法

EXCLUSIVE

 

Type (種別)

Enumeration (列挙)。次のいずれかになります。

  • DETACHED

  • ENVELOPED

  • ENVELOPING

作成する署名の種別

ENVELOPED

 

Element Path (要素のパス)

String (文字列)

署名する要素に解決される明確な XPath 式 (内部的に分離された署名の場合)

 

Streaming Strategy (ストリーミング戦略)

反復可能ストリームを使用すべきかどうか、およびその動作を設定します。

 

Key Id (キー ID)

String (文字列)

JCE 設定で定義されるキー ID。

 

Jce Key Info (JCE キー情報)

インラインキー定義。

 

Target Variable (対象変数)

String (文字列)

操作の出力が格納される変数の名前

 

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。その式の結果は対象変数に保存されます。

#[payload]

 

出力型

Binary (バイナリ)

スロー

  • CRYPTO:MISSING_KEY​  

  • CRYPTO:KEY​  

  • CRYPTO:PASSPHRASE​  

  • CRYPTO:SIGNATURE​  

Xml Validate 操作

<crypto:xml-validate>

署名済み XML ドキュメントを検証します。

パラメーター

名前 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x​ 

Content (コンテンツ)

Binary (バイナリ)

検証するドキュメント (署名を含む) を指定します。

#[payload]

 

Element Path (要素のパス)

String (文字列)

署名済み要素に解決される明確な XPath 式 (内部的に分離された署名の場合)。

 

Use inline certificate if present (インライン証明書を使用 (存在する場合))

Boolean (ブール)

Specify whether or not to validate the signature against a certificate contained in the ​ds:Signature​ 要素に含まれる証明書が存在する場合にその証明書に対して署名を検証するかどうかを指定します。

"false"

 

Key Id (キー ID)

String (文字列)

JCE 設定で定義されるキー ID を指定します。

 

Jce Key Info (JCE キー情報)

インラインキー定義。

 

スロー

  • CRYPTO:MISSING_KEY​  

  • CRYPTO:PARAMETERS​  

  • CRYPTO:VALIDATION​  

型の定義

Expiration Policy (有効期限ポリシー)

項目 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS

  • MICROSECONDS

  • MILLISECONDS

  • SECONDS

  • MINUTES

  • HOURS

  • DAYS

maxIdleTime 属性の時間単位

Repeatable In Memory Stream (反復可能なメモリ内ストリーム)

項目 説明 デフォルト値 必須

Initial Buffer Size (初期バッファサイズ)

Number (数値)

これは、ストリームをコンシュームし、ストリームへのランダムアクセスを提供する目的で割り当てられるメモリの容量です。ストリームに含まれているデータがこのバッファに適合できる量を超えている場合、​bufferSizeIncrement​ 属性に従って拡張され、上限は ​maxInMemorySize​ となります。

Buffer Size Increment (バッファサイズ増分)

Number (数値)

バッファサイズが初期サイズを超えた場合に、どれくらい拡張されるか。値を 0 以下に設定すると、バッファが拡張されません。つまり、バッファがフルになると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。

Max Buffer Size (最大バッファサイズ)

Number (数値)

使用するメモリの最大量。これを超えると、​STREAM_MAXIMUM_SIZE_EXCEEDED​ エラーが発生します。0 以下の値は無制限を意味します。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE

  • KB

  • MB

  • GB

これらのすべての属性の単位

Repeatable File Store Stream (反復可能なファイルストアストリーム)

項目 説明 デフォルト値 必須

Max In Memory Size (最大メモリ内サイズ)

Number (数値)

データをメモリ内に保持するためにストリームで使用する最大メモリを定義します。これを超えると、ディスクへのコンテンツのバッファが開始されます。

Buffer Unit (バッファ単位)

Enumeration (列挙)。次のいずれかになります。

  • BYTE

  • KB

  • MB

  • GB

maxInMemorySize で表される単位

Jce Asymmetric Key Info (JCE 非対称キー情報)

項目 説明 デフォルト値 必須

Key Id (キー ID)

String (文字列)

操作から参照される内部キー ID。

x

Alias (別名)

String (文字列)

キーストア内のキーの別名。

x

Password (パスワード)

String (文字列)

キーの非公開部分のロック解除に使用されるパスワード。

Jce Symmetric Key Info (JCE 対称キー情報)

項目 説明 デフォルト値 必須

Key Id (キー ID)

String (文字列)

操作から参照される内部キー ID。

x

Alias (別名)

String (文字列)

キーストア内のキーの別名。

x

Password (パスワード)

String (文字列)

キーのロック解除に使用されるパスワード。

x