第 74 章 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 Signed Data 实例,并验证 CMS Signed Data 实例。

组件使用 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)

要配置共享的 SignedDataVerifierConfiguration,它会决定验证操作的 uri 参数。

 

SignedDataVerifier 配置

envelopedDataDecryptor Configuration (advanced)

要配置共享的 EnvelopedDataDecryptorConfiguration,这决定了解密操作的 uri 参数。

 

EnvelopedDataDecryptor 配置

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Crypto CMS 端点使用 URI 语法配置:

crypto-cms:cryptoOperation:name

使用以下路径和查询参数:

74.1.1. 路径名(2 参数):

名称描述默认类型

cryptoOperation

在 endpoint uri 的 crypto scheme e.g. crypto-cms:sign set sign as the operation. 可能的值有:签名、验证、加密或解密。

 

CryptoOperation

name

需要该 URI 中的 name 部分可以由用户选择,以便区分 camel 上下文中的不同 signer/verifier/encryptor/decryptor 端点。

 

字符串

74.1.2. 查询参数(15 参数):

名称描述默认类型

keyStore (common)

包含签名私钥的密钥存储,验证公钥、加密或公钥,以及根据操作解密或私钥。使用此参数或参数 'keyStoreParameters'。

 

KeyStore

keyStoreParameters (common)

包含签名密钥的密钥存储、验证公钥、加密或公钥、根据操作解密或私钥。使用此参数或参数 'keystore'。

 

KeyStoreParameters

同步 (高级)

设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。

false

布尔值

密码 (解密)

设置私钥的密码。假设密钥存储中的所有私钥都具有相同的密码。如果没有设置,则假定私钥的密码由 KeyStoreParameters 中提供的密钥存储密码提供。

 

Char[]

fromBase64 (decrypt_verify)

如果为 true,则 CMS 信息是 base 64 编码,则必须在处理过程中进行解码。默认值为 false。

false

布尔值

contentEncryptionAlgorithm (encrypt)

加密算法,如 DESed/CBC/PKCS5Padding。进一步可能的值: DESed/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding.

 

字符串

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)

用于内容加密的 secret 对称密钥的密钥长度。只有指定的内容加密算法允许不同大小的密钥时才使用。如果 contentEncryptionAlgorithm=AES/CBC/PKCS5Padding 或 Camellia/CBC/PKCS5Padding then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding, then 192, 128; if strong encryption 然后,为 AES/CBC/PKCS5Padding 和 Camellia/PKCS5Padding 启用了 192/PKCS5Padding,密钥长度为 192 和 256。

 

int

unprotectedAttributes GeneratorProvider (encrypt)

不受保护的属性的生成器供应商。默认值为 null,这表示没有受保护的属性添加到 Enveloped Data 对象中。请参阅 https://tools.ietf.org/html/rfc5652#section-6.1

 

AttributesGenerator Provider

toBase64 (encrypt_sign)

指明已签署的数据还是 Enveloped Data 实例是否应采用 base64 编码。默认值为 false。

false

布尔值

includeContent (sign)

指明已签名的内容是否应当包含在 Signed Data 实例中。如果为 false,则在标头 CamelCryptoCmsSignedData 中创建一个分离的签名数据实例。

true

布尔值

signer (sign)

signer 信息:引用实现 org.apache.camel.component.crypto.cms.api.SignerInfo 的 bean

 

list

signedDataHeaderBase64 (verify)

指明标头 CamelCryptoCmsSignedData 中的值为 base64 编码。默认值为 false。仅与分离签名相关。在分离的签名案例中,标头包含 Signed Data 对象。

false

布尔值

verifySignaturesOfAll Signers (verify)

如果为 true,则验证 Signed Data 对象中包含的所有签名人的签名。如果为 false,则只验证签名信息是否与其中一个指定证书匹配。默认值为 true。

true

布尔值

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.