第75章 暗号 CMS コンポーネント
Camel バージョン 2.20 以降で利用可能
Cryptographic Message Syntax (CMS) は、メッセージの署名と暗号化の確立された標準です。Apache Crypto CMS コンポーネントは、この標準の次の部分をサポートしています: * キートランスポート (非対称キー) を使用したコンテンツタイプ "エンベロープデータ"、* コンテンツタイプ "署名済みデータ"。CMS エンベロープデータインスタンスの作成、CMS エンベロープデータインスタンスの復号化、CMS 署名データインスタンスの作成、および CMS 署名データインスタンスの検証を行うことができます。
コンポーネントは、Bouncy Castle ライブラリー bcprov-jdk18on および bcpkix-jdk18on を使用します。
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 コンポーネントがプロバイダーを登録します。
75.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
パスおよびクエリーパラメーターを使用します。
75.1.1. パスパラメーター (2 個のパラメーター):
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
cryptoOperation | 必須 エンドポイント URI の暗号スキームの後に指定された暗号操作を設定します。たとえば、crypto-cms:sign 操作として署名を設定します。可能な値: 署名、検証、暗号化、または復号化。 | CryptoOperation | |
name | 必須 URI の名前部分をユーザーが選択して、camel コンテキスト内の異なる署名者/検証者/暗号化者/復号化者エンドポイントを区別できます。 | String |
75.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 |