第 75 章 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-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 个选项,如下所列。

Name描述默认值类型

signedDataVerifier 配置 (advanced)

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

 

SignedDataVerifier Configuration

envelopedDataDecryptor Configuration (advanced)

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

 

EnvelopedDataDecryptor Configuration

resolveProperty Placeholders (advanced)

组件是否应在启动时解析属性占位符。只有 String 类型的属性可以使用属性占位符。

true

布尔值

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

crypto-cms:cryptoOperation:name

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

75.1.1. 路径参数(2 参数):

Name描述默认值类型

cryptoOperation

必需的 在端点 uri.g. crypto-cms:sign 设置签名作为操作的加密方案后提供的 Crypto 操作。可能的值有: sign, verify, encrypt, 或 decrypt。

 

CryptoOperation

name

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

 

字符串

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

Name描述默认值类型

keystore (common)

根据操作,密钥存储包含签名人私钥、verifier 公钥、加密密钥加密密钥、解密或私钥。使用此参数或参数 'keyStoreParameters'。

 

KeyStore

keyStoreParameters (common)

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

 

KeyStoreParameters

同步 (高级)

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

false

布尔值

密码 (解密)

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

 

char[]

fromBase64 (decrypt_verify)

如果为 true,则 CMS 消息采用 base 64 编码,必须在处理过程中被解码。默认值为 false。

false

布尔值

contentEncryptionAlgorithm (encrypt)

加密算法,如 DESede/CBC/PKCS5Padding。其它可能的值:DESede/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

接收者 (加密)

接收者信息:引用实现接口 org.apache.camel.component.crypto.cms.api.TransRecipientInfo 的 bean

 

list

secretKeyLength (encrypt)

用于内容加密的 secret 对称密钥的密钥长度。仅在指定的 content-encryption 算法允许不同大小的密钥时使用。如果 contentEncryptionAlgorithm=AES/CBC/PKCS5Padding 或 Camellia/CBC/PKCS5Padding 随后 128;如果 contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding,则后续 192、128;如果对 AES/CBC/PKCS5Padding 和 Camellia/CBC/PKCS5Padding 也启用了密钥长度。

 

int

unprotectedAttributes GeneratorProvider (encrypt)

取消保护属性的生成器的提供商。默认值为 null,这意味着没有未保护的属性添加到 Enveloped Data 对象中。请参阅 https://tools.ietf.org/html/rfc5652#section-6.1

 

AttributesGenerator Provider

toBase64 (encrypt_sign)

指明 Signed Data 或 Enveloped Data 实例是否应采用 base64 编码。默认值为 false。

false

布尔值

includeContent (sign)

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

true

布尔值

签名者 (签名)

签名者信息:引用实现 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.