第74章 暗号 CMS コンポーネント

Camel バージョン 2.20 以降で利用可能

Cryptographic Message Syntax (CMS) は、メッセージの署名と暗号化の確立された標準です。Apache Crypto CMS コンポーネントは、この標準の次の部分をサポートしています。CMS エンベロープデータインスタンスの作成、CMS エンベロープデータインスタンスの復号化、CMS 署名データインスタンスの作成、および CMS 署名データインスタンスの検証を行うことができます。

コンポーネントは、Bouncy Castle ライブラリー bcprov-jdk15on および bcpkix-jdk15on を使用します。

Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-crypto-cms</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

このコンポーネントのエンドポイントを呼び出す前に、Bouncy Castle セキュリティープロバイダーをアプリケーションに登録することをお勧めします。

Security.addProvider(new BouncyCastleProvider());

Bouncy Castle セキュリティープロバイダーが登録されていない場合は、Crypto CMS コンポーネントがプロバイダーを登録します。

74.1. オプション

Crypto CMS コンポーネントは、以下に示す 3 個のオプションをサポートしています。

名前説明デフォルトタイプ

signedDataVerifier Configuration (advanced)

検証操作の uri パラメーターを決定する、共有の SignedDataVerifierConfiguration を設定します。

 

SignedDataVerifier Configuration

envelopedDataDecryptor Configuration (advanced)

暗号化解除操作の uri パラメーターを決定する共有 EnvelopedDataDecryptorConfiguration を設定する場合。

 

EnvelopedDataDecryptor Configuration

resolveProperty Placeholders (advanced)

起動時にコンポーネントがプロパティープレースホルダーを解決するかどうか。String タイプのプロパティーのみがプロパティープレースホルダーを使用できます。

true

boolean

Crypto CMS エンドポイントは、URI 構文を使用して設定されます。

crypto-cms:cryptoOperation:name

パスおよびクエリーパラメーターを使用します。

74.1.1. パスパラメーター (2 個のパラメーター):

名前説明デフォルトタイプ

cryptoOperation

必須 エンドポイント URI の暗号スキームの後に指定された暗号操作を設定します。たとえば、crypto-cms:sign 操作として署名を設定します。可能な値: 署名、検証、暗号化、または復号化。

 

CryptoOperation

name

必須 URI の名前部分をユーザーが選択して、camel コンテキスト内の異なる署名者/検証者/暗号化者/復号化者エンドポイントを区別できます。

 

String

74.1.2. クエリーパラメーター(15 個のパラメーター):

名前説明デフォルトタイプ

keyStore (common)

操作に応じて、署名者の秘密鍵、検証者の公開鍵、暗号化者の公開鍵、復号化者の秘密鍵を含むキーストア。このパラメーターまたはパラメーター keyStoreParameters のいずれかを使用します。

 

KeyStore

keyStoreParameters (common)

操作に応じて、署名者の秘密鍵、検証者の公開鍵、暗号化者の公開鍵、復号化者の秘密鍵を含むキーストア。このパラメーターまたはパラメーター keystore のいずれかを使用します。

 

KeyStoreParameters

synchronous (advanced)

同期処理を厳密に使用するか、Camel が非同期処理を使用できるかどうかを設定します (サポートされている場合)。

false

boolean

password (decrypt)

秘密鍵のパスワードを設定します。キーストア内のすべての秘密鍵のパスワードは同じであると想定されています。設定されていない場合、秘密鍵のパスワードは、KeyStoreParameters で指定されたキーストアパスワードによって指定されると想定されます。

 

Char[]

fromBase64 (decrypt_verify)

true の場合、CMS メッセージは Base 64 でエンコードされており、処理中にデコードする必要があります。デフォルト値は false です。

false

Boolean

contentEncryptionAlgorithm (encrypt)

DESede/CBC/PKCS5Padding などの暗号化アルゴリズム。さらに可能な値: DESede/CBC/PKCS5Padding、AES/CBC/PKCS5Padding、Camellia/CBC/PKCS5Padding、CAST5/CBC/PKCS5Padding。

 

String

originatorInformation Provider (encrypt)

発信者情報のプロバイダー。https://tools.ietf.org/html/rfc5652#section-6.1 を参照してください。デフォルト値は null です。

 

OriginatorInformation Provider

recipient (encrypt)

受信者情報: インターフェイス org.apache.camel.component.crypto.cms.api.TransRecipientInfo を実装する Bean への参照

 

List

secretKeyLength (encrypt)

コンテンツの暗号化に使用される秘密対称キーのキーの長さ。指定されたコンテンツ暗号化アルゴリズムが異なるサイズのキーを許可する場合にのみ使用されます。contentEncryptionAlgorithm=AES/CBC/PKCS5Padding または Camellia/CBC/PKCS5Padding の場合は 128。contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding の場合、192、128。強力な暗号化が有効になっている場合、AES/CBC/PKCS5Padding と Camellia/CBC/PKCS5Padding では、キーの長さ 192 と 256 も可能です。

 

int

unprotectedAttributes GeneratorProvider (encrypt)

保護されていない属性のジェネレーターのプロバイダー。デフォルト値は null で、保護されていない属性がエンベロープデータオブジェクトに追加されないことを意味します。https://tools.ietf.org/html/rfc5652#section-6.1 を参照してください。

 

AttributesGenerator プロバイダー

toBase64 (encrypt_sign)

Signed Data または Enveloped Data インスタンスが base 64 エンコードされるかどうかを示します。デフォルト値は false です。

false

Boolean

includeContent (sign)

署名されたコンテンツを Signed Data インスタンスに含める必要があるかどうかを示します。false の場合、分離された署名付きデータインスタンスがヘッダー CamelCryptoCmsSignedData に作成されます。

true

Boolean

signer (sign)

署名者情報: org.apache.camel.component.crypto.cms.api.SignerInfo を実装する Bean への参照

 

List

signedDataHeaderBase64 (verify)

ヘッダー CamelCryptoCmsSignedData の値が base64 でエンコードされているかどうかを示します。デフォルト値は false です。デタッチされた署名にのみ関連します。デタッチされた署名の場合、ヘッダーには署名済みデータオブジェクトが含まれます。

false

Boolean

verifySignaturesOfAll Signers (verify)

true の場合、Signed Data オブジェクトに含まれるすべての署名者の署名が検証されます。false の場合、署名者情報が指定された証明書の 1 つと一致する 1 つの署名のみが検証されます。デフォルト値は true です。

true

Boolean