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

名称描述默认值类型

signedDataVerifier 配置 (advanced)

要配置共享的 SignedDataVerifierConfiguration,它决定了 verify 操作的 uri 参数。

 

SignedDataVerifier 配置

envelopedDataDecryptor Configuration (advanced)

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

 

EnvelopedDataDecryptor 配置

resolveProperty Placeholders (advanced)

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

true

布尔值

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

crypto-cms:cryptoOperation:name

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

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

名称描述默认值类型

cryptoOperation

必需 在 endpoint uri e.g. crypto-cms:sign set sign 作为操作中的加密方案后提供的加密操作。可能的值有:签名、验证、加密或解密。

 

CryptoOperation

name

用户可以选择 URI 中的名称部分来区分 camel 上下文中的不同 signer/verifier/encryptor/decryptor 端点。

 

字符串

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

名称描述默认值类型

keyStore (common)

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

 

KeyStore

keyStoreParameters (common)

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

 

KeyStoreParameters

同步 (advanced)

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

false

布尔值

password (decrypt)

设置私钥的密码。假设密钥存储中的所有私钥都具有相同的密码。如果没有设置,则假定私钥的密码是由 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 (加密)

原始器信息的供应商。See 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 then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; 如果对 AES/CBC/PKCS5Padding 和 Camellia/CBC/PKCS5Padding 和 Camellia/PKCS5Padding 和 Camellia/CBC/PKCS5Padding 启用了强大的加密。

 

int

unprotectedAttributes GeneratorProvider (加密)

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

 

AttributesGenerator Provider

toBase64 (encrypt_sign)

指明已签名数据还是 Enveloped Data 实例应采用 base 64 编码。默认值为 false。

false

布尔值

includeContent (sign)

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

true

布尔值

签名人 (sign)

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