搜索

第 296 章 XML 安全数据格式

download PDF

从 Camel 版本 2.0 开始提供

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

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

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

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

296.1. XMLSecurity 选项

XML 安全架构支持 13 个选项,如下所列。

Name默认值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_256_256_256_ARCipher.SEED_128 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256_256_256_256_GCM是 MLCipher.TRIPLEDES。

passphrase

 

字符串

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

passPhraseByte

 

byte[]

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

secureTag

 

字符串

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

secureTagContents

false

布尔值

一个布尔值,用于指定 XML 元素是否被加密或者 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 实例的配置选项。

keyPassword

 

字符串

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

digestAlgorithm

SHA1

字符串

与 RSA OAEP 算法一起使用的摘要算法。可用的选择有:XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 默认值是 XMLCipher.SHA1

mgfAlgorithm

MGF1_SHA1

字符串

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

addKeyValueForEncryptedKey

true

布尔值

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

contentTypeHeader

false

布尔值

如果数据格式可以这样做,则数据格式是否应使用 data 格式的类型设置 Content-Type 标头。例如,用于数据格式的 application/xml 放入 XML 或用于数据格式的 application/json,如 JSon 等。

296.1.1. 密钥加密算法

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.