Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule は、Pretty Good Privacy (PGP) を使用して、メッセージのすべての部分を暗号化できます。PGP は、データ圧縮とデータ暗号化を組み合わせてメッセージを保護します。圧縮により、ペイロードのサイズが削減されて、後でアプリケーションで送信するときの時間が短縮されます。
PGP 暗号化は複雑であるため、JCE または XML 暗号化よりも負荷の高いタスクになります。
このセクションは、次のシナリオに対応します。
暗号化: 別のパーティの公開キーを使用して、Mule アプリケーションで送信メッセージを暗号化する。
復号化: 独自の非公開キーを使用して、Mule アプリケーションで受信メッセージを復号化する。
Anypoint Studio から PGP 暗号化を設定するには、次の手順に従います。
[Mule Palette (Mule パレット)] から、[Crypto (暗号化)] をプロジェクトに追加します。
手順は、「拡張機能のインストール」を参照してください。
目的の操作を選択し、コンポーネントをフローにドラッグします。
コンポーネントプロパティを開いて、既存のモジュール設定を選択するか、[Public keyring (公開キーリング)] ファイルと [Private keyring (非公開キーリング)] ファイルを指定して新しいモジュール設定を作成します。
署名操作で使用する非対称キーの情報を追加することもできます。
モジュール設定で以前定義した [Key id (キー ID)] 値を使用して [Key selection (キー選択)] を設定するか、この操作用に新しく定義します。
操作中に使用するアルゴリズムを選択します。
RFC-4880 標準仕様では、キーにサブキーを含めることができると定義されています。サブキーを使用する場合は、XML 設定の <crypto:pgp-asymmetric-key-info>
要素の fingerprint
属性でキーを指定してください。
たとえば、署名操作と暗号化操作で異なるキーを使用し、それらのキーが異なるアルゴリズム (例: DSA と ElGamal) を使用している場合は、実行する操作に応じて適切なキーのフィンガープリントを参照する必要があります。
この場合は、メッセージの暗号化では ElGamal フィンガープリントを参照し、メッセージの署名では DSA フィンガープリントを参照します。
PGP 暗号化中は、メッセージの送信者は受信者の公開キーを使用してそのコンテンツを暗号化する必要があります。そのため、他の誰かの公開キーを使用して Mule アプリケーションでメッセージを暗号化する場合、公開キーをキーリングに追加する必要があります。新しい PGP 設定を Mule アプリケーションに追加する場合、キーリングファイルを指定し、暗号化モジュールがそこから公開キーを取得してメッセージを暗号化できるようにする必要があります。
GPG Suite などのツールを使用して、他のパーティの公開キーをインポートします。詳細は、以下を参照してください。
同じツールを使用し、出力形式として binary
を選択して公開キーをエクスポートします。これにより、拡張子が .gpg
のキーリングファイルが生成されます。
実行時に Mule アプリケーションがアクセスできる場所にキーリング (.gpg
) ファイルが保存されていることを確認します。
<crypto:pgp-config name="encrypt-conf" publicKeyring="pgp/pubring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
Encrypt 操作の使用
次の例では、ASCII アーマー形式の暗号化ペイロードを返します。これは、プレーンテキストチャネルを介した送信に適しています。
<crypto:pgp-encrypt config-ref="encrypt-conf" keyId="myself"/>
Encrypt Binary 操作の使用
代わりにバイナリ出力を返すには、pgp-encrypt-binary
操作を使用します。
<crypto:pgp-encrypt-binary config-ref="pgp-conf" keyId="recipient"/>
バイナリ出力は、ASCII アーマー形式を使用する場合よりも短時間で生成できます。ただし、標準出力ではないため、他のシステムに送信して復号化するのに適してしない場合があります。
Binary To Armored 操作の使用
バイナリ出力を含むペイロードを別のシステムに送信する必要がある場合、ペイロードを ASCII アーマー形式に変換できます。
<crypto:pgp-binary-to-armored/>
この操作には、1 つの入力パラメーター (変換するメッセージペイロード) があります。
暗号化に加えて、メッセージをアトミックに暗号化および署名できます。これにより、暗号化されたメッセージに似たメッセージ (ASCII アーマー形式) が返されます。この場合、返されたメッセージの暗号化コンテンツ内に署名も含まれます。この署名により、元のメッセージの整合性チェックができます。
暗号化および署名を行うには、署名者の非公開キー (通常は送信者) が公開キーリングに含まれる必要があります。このプロセスでは、ASCII アーマー形式の出力が常に生成されます。
<crypto:pgp-encrypt-and-sign config-ref="encrypt-conf">
<crypto:encryption-key-selection keyId="recipient-key-id" />
<crypto:sign-key-selection keyId="signer-key-id" />
</crypto:pgp-encrypt-and-sign>
PGP 復号化中は、メッセージの受信者はその非公開キーを使用して、公開キーで暗号化されたメッセージのコンテンツを復号化する必要があります。 そのため、受信者はその公開キーを送信者 (公開キーを使用して暗号化されたメッセージを送信するユーザー) に配信する必要があります。
<crypto:pgp-config name="decrypt-conf" privateKeyring="pgp/secring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221" passphrase="mule1234"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
上記の例では、decrypt 操作で非公開キーリングを使用できるようにするために少なくとも 3 つのパラメーターを指定する必要があります。
キー ID (keyId
): 操作からこのキーを参照できるようにする内部 ID。
キーフィンガープリント (fingerprint
): 外部 GPG ツール (GPG Keychain など) から取得できるキーフィンガープリントの末尾の 16 文字。
パスフレーズ (passphrase
): 非公開キーのパスフレーズ。
<crypto:pgp-decrypt config-ref="decrypt-conf"/>
設定済みの非公開キーを使用してメッセージに署名します。
<crypto:pgp-config name="sign-conf" privateKeyring="pgp/secring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221" passphrase="mule1234"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
<crypto:pgp-sign config-ref="sign-conf" keyId="myself"/>
署名者の公開キーを使用してメッセージの署名を検証します。
<crypto:pgp-config name="validate-conf" publicKeyring="pgp/pubring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="signer" fingerprint="DE3F10F1B6B7F221"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
<crypto:pgp-validate config-ref="validate-conf" value="#[payload]" expected="#[vars.expected]"/>
PGP のキーストア設定。操作で使用される内部名と共にキーのリストが含まれます。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Name (名前) |
String (文字列) |
この設定の名前。コネクタはこの名前の設定を参照します。 |
x |
|
Public Keyring (公開キーリング) |
String (文字列) |
公開キーリングファイル。 |
|
|
Private Keyring (非公開キーリング) |
String (文字列) |
非公開キーリングファイル。 |
|
|
Pgp Key Infos (PGP キー情報) |
Array (配列)。次のいずれかになります。 |
対象となるキーのリスト。これらの参照には内部 ID が使用されます。 |
|
|
Expiration Policy (有効期限ポリシー) |
動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Runtime で期限切れに相当するとみなされます。これは、対象になった瞬間にプラットフォームでインスタンスの有効期限が切れるという意味ではありません。ランタイムによって適切と判断されたときに、インスタンスが実際にパージされます。 |
|
<crypto:pgp-decrypt>
PGP を使用してストリームを復号化し、結果として元のデータを取得します。復号化は非公開キーを使用して行われるため、シークレットパスフレーズを指定する必要があります。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
DataWeave 式を使用して、すべて、または一部のメッセージを復号化できます。 |
|
|
File Name (ファイル名) |
String (文字列) |
復号化する内部ファイル名。指定しない場合、最初のファイル名が使用されます。 |
|
|
Output Mime Type (出力 MIME タイプ) |
String (文字列) |
この操作で出力されるペイロードの MIME タイプ。 |
|
|
Output Encoding (出力エンコード) |
String (文字列) |
この操作で出力されるペイロードのエンコード。 |
|
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力が格納される変数の名前 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。その式の結果は対象変数に保存されます。 |
|
|
Validate Signature if Found (署名の検証 (ある場合)) |
Boolean (ブール) |
内部復号化フェーズのいずれかでコンテンツの署名が見つかった場合、操作は、復号化されたコンテンツの検証を試みます。この検証では、*署名者の公開キー*が操作設定の公開キーリングに存在する必要があります。また、検証が失敗すると、復号化操作も失敗します。 |
|
|
<crypto:pgp-encrypt>
PGP を使用してストリームを暗号化し、結果として ASCII アーマー形式のストリーム出力を取得します。暗号化は受信者の公開キーを使用して行われるため、シークレットパスフレーズは必要ありません。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
DataWeave 式を使用して、すべて、または一部のメッセージを暗号化できます。 |
|
|
Algorithm (アルゴリズム) |
Enumeration (列挙)。次のいずれかになります。
|
暗号化で使用する対称アルゴリズム |
|
|
File Name (ファイル名) |
String (文字列) |
結果の PGP ヘッダーで使用する内部ファイル名。 |
stream |
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Key Id (キー ID) |
String (文字列) |
PGP 設定で定義されるキー ID。 |
|
|
Pgp Key Info (PGP キー情報) |
次のいずれかになります。 |
インラインキー定義。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力が格納される変数の名前 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。その式の結果は対象変数に保存されます。 |
|
|
<crypto:pgp-encrypt-and-sign>
PGP を使用してストリームの暗号化と署名を実行し、結果として ASCII アーマー形式のストリーム出力を生成できます。暗号化には受信者の公開キーが必要とされるため、シークレットパスフレーズは必要ありません。シークレットパスフレーズは署名で必要になります。このプロセスで署名者 (通常は送信者) の非公開キーが使用されるためです。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
DataWeave 式を使用して、すべて、または一部のメッセージを暗号化できます。 |
|
|
Algorithm (アルゴリズム) |
Enumeration (列挙)。次のいずれかになります。
|
暗号化で使用する対称アルゴリズム。 |
|
|
File Name (ファイル名) |
String (文字列) |
結果の PGP ヘッダーで使用する内部ファイル名。 |
stream (ストリーム) |
|
Encryption key selection (暗号化キー選択) |
PGP Key Selection (PGP キー選択) を持つ子要素 |
受信者の公開キーの識別子。 |
|
|
Sign key selection (署名キー選択) |
PGP Key Selection (PGP キー選択) を持つ子要素 |
署名者の非公開キーの識別子。 |
|
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Key Id (キー ID) |
String (文字列) |
PGP 設定で定義されるキー ID。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力を保存する変数の名前。 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。この式の結果は対象変数に保存されます。 |
|
|
<crypto:pgp-encrypt-binary>
PGP を使用してストリームを暗号化し、結果としてバイナリ出力を生成できます。暗号化プロセスでは受信者の公開キーが使用されるため、シークレットパスフレーズは必要ありません。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
DataWeave 式を使用して、すべて、または一部のメッセージを暗号化できます。 |
|
|
Algorithm (アルゴリズム) |
Enumeration (列挙)。次のいずれかになります。
|
暗号化で使用する対称アルゴリズム |
|
|
File Name (ファイル名) |
String (文字列) |
結果の PGP ヘッダーで使用する内部ファイル名。 |
stream |
|
Output Mime Type (出力 MIME タイプ) |
String (文字列) |
この操作で出力されるペイロードの MIME タイプ。 |
|
|
Output Encoding (出力エンコード) |
String (文字列) |
この操作で出力されるペイロードのエンコード。 |
|
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Key Id (キー ID) |
String (文字列) |
PGP 設定で定義されるキー ID。 |
|
|
Pgp Key Info (PGP キー情報) |
次のいずれかになります。 |
インラインキー定義。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力が格納される変数の名前 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。その式の結果は対象変数に保存されます。 |
|
|
<crypto:pgp-sign>
ストリームの分離された (スタンドアロン) PGP 署名を作成します。署名は送信者の非公開キーを使用して行われるため、シークレットパスフレーズを指定する必要があります。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
署名するコンテンツ |
|
|
Algorithm (アルゴリズム) |
Enumeration (列挙)。次のいずれかになります。
|
ダイジェスト (ハッシュ) アルゴリズム |
|
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Key Id (キー ID) |
String (文字列) |
PGP 設定で定義されるキー ID。 |
|
|
Pgp Key Info (PGP キー情報) |
次のいずれかになります。 |
インラインキー定義。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力が格納される変数の名前 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。その式の結果は対象変数に保存されます。 |
|
|
<crypto:pgp-sign-binary>
ストリームの分離された (スタンドアロン) PGP 署名を作成します。署名は送信者の非公開キーを使用して行われるため、シークレットパスフレーズを指定する必要があります。
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Configuration (設定) |
String (文字列) |
使用する設定の名前。 |
x |
|
Content (コンテンツ) |
Binary (バイナリ) |
署名するコンテンツ |
|
|
Algorithm (アルゴリズム) |
Enumeration (列挙)。次のいずれかになります。
|
ダイジェスト (ハッシュ) アルゴリズム |
|
|
Output Mime Type (出力 MIME タイプ) |
String (文字列) |
この操作で出力されるペイロードの MIME タイプ。 |
|
|
Output Encoding (出力エンコード) |
String (文字列) |
この操作で出力されるペイロードのエンコード。 |
|
|
Streaming Strategy (ストリーミング戦略) |
|
反復可能ストリームを使用すべきかどうか、およびその動作を設定します。 |
|
|
Key Id (キー ID) |
String (文字列) |
PGP 設定で定義されるキー ID。 |
|
|
Pgp Key Info (PGP キー情報) |
次のいずれかになります。 |
インラインキー定義。 |
|
|
Target Variable (対象変数) |
String (文字列) |
操作の出力が格納される変数の名前 |
|
|
Target Value (対象値) |
String (文字列) |
操作の出力に対して評価される式。その式の結果は対象変数に保存されます。 |
|
|
<crypto:pgp-binary-to-armored>
暗号化された PGP メッセージまたは PGP 署名をプレーンテキストチャネルに適した ASCII アーマー形式の表現に変換します。
項目 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Max Idle Time (最大アイドル時間) |
Number (数値) |
有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値 |
||
Time Unit (時間単位) |
Enumeration (列挙)。次のいずれかになります。
|
maxIdleTime 属性の時間単位 |
項目 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Initial Buffer Size (初期バッファサイズ) |
Number (数値) |
これは、ストリームをコンシュームし、ストリームへのランダムアクセスを提供する目的で割り当てられるメモリの容量です。ストリームに含まれているデータがこのバッファに適合できる量を超えている場合、 |
||
Buffer Size Increment (バッファサイズ増分) |
Number (数値) |
バッファサイズが初期サイズを超えた場合に、どれくらい拡張されるか。値を 0 以下に設定すると、バッファが拡張されません。つまり、バッファがフルになると、 |
||
Max Buffer Size (最大バッファサイズ) |
Number (数値) |
使用するメモリの最大量。これを超えると、 |
||
Buffer Unit (バッファ単位) |
Enumeration (列挙)。次のいずれかになります。
|
これらのすべての属性の単位 |
項目 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Max In Memory Size (最大メモリ内サイズ) |
Number (数値) |
データをメモリ内に保持するためにストリームで使用する最大メモリを定義します。これを超えると、ディスクへのコンテンツのバッファが開始されます。 |
||
Buffer Unit (バッファ単位) |
Enumeration (列挙)。次のいずれかになります。
|
maxInMemorySize で表される単位 |
項目 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Key Id (キー ID) |
String (文字列) |
操作から参照される内部キー ID。 |
x |
|
Key Pair Identifier (キーペア識別子) |
キーストア内のキーを識別する方法。 |
x |
||
Passphrase (パスフレーズ) |
String (文字列) |
キーのシークレット部分のロックを解除するためのパスワード。 |
項目 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Fingerprint (フィンガープリント) |
String (文字列) |
設定されたキーのフィンガープリント |
||
Principal (プリンシパル) |
String (文字列) |
キーの生成時に指定される名前とメールの組み合わせ。この項目を使用する場合は、プライマリキーを使用します。
異なるアルゴリズムのキー (例: DSA と ElGamal) を署名と暗号化に使用する場合は、この項目を使用しないでください。その代わりに、 |