第72章 crypto CMS コンポーネント
Camel バージョン 2.20 で利用可能
暗号化メッセージ構文(CMS) は、メッセージの署名および暗号化に適切に確立された標準です。Apache Crypto CMS コンポーネントは、この規格の以下の部分をサポートします。* Content Type "Enveloped Data" with Key Transport(asymmetric key)、* Content Type "Signed Data"CMS Enveloped Data インスタンスを作成し、CMS Enveloped Data インスタンスを復号化し、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 コンポーネントはプロバイダーを登録します。
72.1. オプション
Crypto CMS コンポーネントは、以下に示す 3 つのオプションをサポートします。
Name | 説明 | デフォルト | Type |
---|---|---|---|
signedDataVerifier Configuration (advanced) | 検証操作の uri パラメーターを決定する shared SignedDataVerifierConfiguration を設定します。 | SignedDataVerifier Configuration | |
envelopedDataDecryptor Configuration (advanced) | 共有 EnvelopedDataDecryptorConfiguration を設定するには、復号化操作の uri パラメーターを決定します。 | EnvelopedDataDecryptor 設定 | |
resolveProperty Placeholders (advanced) | 起動時にコンポーネント自体がプロパティープレースホルダーを解決するかどうか。String タイプのプロパティーのみがプロパティープレースホルダーを使用できます。 | true | boolean |
Crypto CMS エンドポイントは、URI 構文を使用して設定します。
crypto-cms:cryptoOperation:name
以下の path パラメーターおよびクエリーパラメーターを使用します。
72.1.1. パスパラメーター(2 パラメーター):
Name | 説明 | デフォルト | Type |
---|---|---|---|
cryptoOperation | required Set the Crypto operation from that provided after the crypto scheme in the endpoint uri(たとえば crypto-cms:sign は署名を操作として設定します)。使用できる値は、Sign、verify、crypting、または decrypt です。 | CryptoOperation | |
name | 必須: URI の name 部分を選択して、camel コンテキスト内の異なる署名者/検証者/暗号化/暗号エンドポイント間を区別できます。 | 文字列 |
72.1.2. クエリーパラメーター(15 パラメーター):
Name | 説明 | デフォルト | Type |
---|---|---|---|
keyStore (common) | 署名側の秘密鍵、検証元公開鍵、公開鍵、公開鍵、操作に応じて復号化する秘密鍵が含まれるキーストア。このパラメーターまたはパラメーター「keyStoreParameters」を使用します。 | KeyStore | |
keyStoreParameters (common) | 操作に応じて、署名側の秘密鍵、検証公開鍵、公開鍵の暗号化、秘密鍵、秘密鍵の復号化が含まれるキーストア。このパラメーターまたはパラメーター「keystore」を使用します。 | KeyStoreParameters | |
同期 (詳細) | 同期処理を厳密に使用するか、Camel が非同期処理を使用できるようにするかを設定します(サポートされている場合)。 | false | boolean |
パスワード (暗号解除) | 秘密鍵のパスワードを設定します。キーストアのすべての秘密鍵に同じパスワードがあることを前提とします。設定されていない場合は、KeyStoreParameters で指定されたキーストアパスワードによって秘密鍵のパスワードが指定されていることが想定されます。 | char[] | |
fromBase64 (decrypt_verify) | true の場合、CMS メッセージはベース 64 でエンコードされ、処理中にデコードする必要があります。デフォルト値は false です。 | false | ブール値 |
contentEncryptionAlgorithm (encrypt) | 暗号化アルゴリズム(DESede/CBC/PKCS5Padding など)。その他の可能な値: DESede/CBC/PKCS5Padding、AES/CBC/PKCS5Padding、Camellia/CBC/PKCS5Padding、CAST5/CBC/PKCS5Padding | 文字列 | |
originatorInformation Provider (encrypt) | originator 情報のプロバイダー。See https://tools.ietf.org/html/rfc5652section-6.1.デフォルト値は null です。 | OriginatorInformation Provider | |
Recipient (encrypt) | Recipient Info: インターフェース org.apache.camel.component.crypto.cms.api.TransRecipientInfo を実装する Bean への参照 | リスト | |
secretKeyLength (encrypt) | コンテンツの暗号化に使用される秘密対称鍵のキーの長さ。指定した content-encryption アルゴリズムで異なるサイズの鍵が許可されている場合にのみ使用します。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 で、保護されていない属性が Enveloped Data オブジェクトに追加されないことを意味します。See https://tools.ietf.org/html/rfc5652section-6.1. | AttributesGenerator Provider | |
toBase64 (encrypt_sign) | Signed Data インスタンスまたは Enveloped Data インスタンスがベース 64 エンコードされているかどうかを示します。デフォルト値は false です。 | false | ブール値 |
includeContent (sign) | 署名済みコンテンツを Signed Data インスタンスに含めるかどうかを示します。false の場合、デタッチされた Signed Data インスタンスがヘッダー CamelCryptoCmsSignedData に作成されます。 | true | ブール値 |
署名側の(署名 ) | 署名側の情報: org.apache.camel.component.crypto.cms.api.SignerInfo を実装する Bean への参照 | リスト | |
signedDataHeaderBase64 (verify) | ヘッダー CamelCryptoCmsSignedData の値が base64 でエンコードされるかどうかを示します。デフォルト値は false です。デタッチされた署名にのみ関連します。デタッチされた署名の場合、ヘッダーに Signed Data オブジェクトが含まれます。 | false | ブール値 |
verifySignaturesOfAll Signers (verify) | true の場合、Signed Data オブジェクトに含まれるすべての署名者の署名が検証されます。false の場合、署名側の情報が指定された証明書のいずれかに一致する署名 1 つのみが検証されます。デフォルト値は true です。 | true | ブール値 |