第 296 章 XML 安全数据格式


从 Camel 版本 2.0 开始提供

XMLSecurity 数据格式有助于在 Document, Element, 和 Element 内容级别(包括使用 XPath 同步多节点加密/解密)的 XML 有效负载的加密和解密。要使用 XML 签名规范为消息签名,请参阅 Camel XML 安全组件。

加密功能基于使用 Apache XML 安全(Santuario)项目支持的格式。目前,使用 Triple-DES 和 AES (128, 192, 和 256)加密格式支持对称加密/解密。以后可以根据需要轻松添加其他格式。此功能允许 Camel 用户在路由中分配或接收时加密/解密有效负载。

从 Camel 2.9开始,
XMLSecurity 数据格式支持非对称密钥加密。在此加密模型中,生成对称密钥,并用于执行 XML 内容加密或解密。然后,这个"内容加密密钥"使用非对称加密算法进行加密,该算法将接收者的公钥用作"密钥加密密钥"。使用非对称密钥加密算法可确保只有接收者的私钥的拥有者才能访问生成的对称加密密钥。因此,只有私钥拥有者才可以解码信息。XMLSecurity Data Format 处理使用非对称密钥加密来加密和解密消息内容和加密密钥所需的所有逻辑。

在处理选择用于加密的 XPath 查询的 XPath 查询时,XMLSecurity Data Format 也改进了对命名空间的支持。命名空间定义映射可作为数据格式配置的一部分包含在内。这可启用 true 命名空间匹配,即使 XPath 查询中的前缀值和目标 xml 文档中的前缀值不是等同的字符串。

296.1. XMLSecurity 选项

XML 安全格式支持 13 个选项,如下所列。

名称默认值Java 类型描述

xmlCipherAlgorithm

TRIPLEDES

字符串

用于加密/解密 XML 消息内容的密码算法。可用的选择有: XMLCipher.TRIPLEDES XMLCipher.AES_128 XMLCipher.AES_128_GCM XMLCipher.AES_192 XMLCipher.AES_192_GCM XMLCipher.AES_256 XMLCipher.AES_256_GCM XMLCipher.SEED_128 XMLCipher.CAMELLIA_128 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 XMLCipher.SEED_128 XMLCipher.

passPhrase

 

字符串

用作 passPhrase 的字符串加密/解密内容。必须提供 passPhrase。如果没有指定 passPhrase,则使用默认的 passPhrase。passPhrase 需要与适当的加密算法一起放置。例如,使用 TRIPLEDES,passPhase 只能是另一个 24 Byte 键

passPhraseByte

 

byte[]

用作 passPhrase 的字节来加密/解密内容。必须提供 passPhrase。如果没有指定 passPhrase,则使用默认的 passPhrase。passPhrase 需要与适当的加密算法一起放置。例如,使用 TRIPLEDES,passPhase 只能是另一个 24 Byte 键

secureTag

 

字符串

XPath 引用为加密/解密所选的 XML Element。如果没有指定标签,则整个有效负载都会加密/解密。

secureTagContents

false

布尔值

用于指定 XML Element 是否要加密的布尔值,或者 XML Element false = Element Level true = Element Content Level 的内容

keyCipherAlgorithm

RSA_OAEP

字符串

用于加密/解密非对称密钥的密码算法。可用的选择有: XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP XMLCipher.RSA_OAEP_11,默认值为 XMLCipher.RSA_OAEP

recipientKeyAlias

 

字符串

在执行非对称密钥加密或解密时,用于从 KeyStore 检索接收者的公钥或私钥时使用的密钥别名。

keyOrTrustStoreParametersId

 

字符串

指的是要在 registry 中查找的 KeyStore 实例,该实例用于创建和加载代表发件人的 trustStore 或接收者的 keyStore 或接收者的 keyStore 的 KeyStore 实例的配置选项。

keyPassword

 

字符串

要从 KeyStore 检索私钥的密码。此密钥用于非对称解密。

digestAlgorithm

SHA1

字符串

用于 RSA OAEP 算法的摘要算法。可用的选择有: XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 默认值为 XMLCipher.SHA1

mgfAlgorithm

MGF1_SHA1

字符串

用于 RSA OAEP 算法的 MGF 算法。可用的选择有: EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 默认值为 EncryptionConstants.MGF1_SHA1

addKeyValueForEncryptedKey

true

布尔值

是否在 EncryptedKey 结构中添加用于加密会话密钥的公钥作为 KeyValue。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该使用 data 格式的类型设置 Content-Type 标头。例如,用于数据格式到 XML 的 application/xml 或用于数据格式的 application/json 发送到 JSon 等。

296.1.1. 密钥加密算法

从 Camel 2.12.0 开始,默认的密钥 Cipher Algorithm 现在是 XMLCipher.RSA_OAEP,而不是 XMLCipher.RSA_v1dot5。由于各种攻击,不建议使用 XMLCipher.RSA_v1dot5。使用 RSA v1.5 作为密钥密码算法的请求将被拒绝,除非它被明确配置为密钥密码算法。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.