74.5. 使用


74.5.1. 原始键

签署和验证交换的最基本方法就是 KeyPair,如下所示:

可使用对密钥的引用通过 Spring XML 扩展 来实现相同的操作

74.5.2. keystores 和 Aliases.

JCE 提供了非常灵活的密钥存储概念,用于托管私钥和证书对,保持加密和密码受到保护。可以通过将别名应用到检索 API 来检索它们。可以通过多种方式将密钥和证书放入密钥存储中,这通常是通过外部的"keytool"应用程序完成的。这是使用 keytool 使用自签名 Cert 和 Private 密钥创建 KeyStore 的良好示例。

示例使用由"bob"别名的密钥和证书的密钥存储。密钥存储的密码和密钥是 'letmein'

以下演示了如何通过 Fluent 构建器使用密钥存储,它还演示了如何加载和初始化密钥存储。

在 Spring a ref 中再次用于查找实际的密钥存储实例。

74.5.3. 更改 JCE 提供程序和算法

更改签名算法或安全供应商是指定其名称的简单关系。您还需要使用与您选择的算法兼容的密钥。

or

74.5.4. 更改签名消息标头

可能需要更改用于存储签名的消息标头。可以在路由定义中指定不同的标头名称,如下所示

or

74.5.5. 更改 buffersize

如果您需要更新 buffer…​ 的大小

or

74.5.6. 动态提供密钥。

当使用 Recipient 列表或类似的 EIP 时,交换的接收者可能会动态变化。在所有接收者间使用相同的密钥可能并不可行。可以根据每个交换来动态指定签名密钥。然后,在签名前,可以使用其目标接收者的密钥动态增强交换。为了便于此签名机制,允许通过以下消息标头动态提供密钥

  • Exchange.SIGNATURE_PRIVATE_KEY, "CamelSignaturePrivateKey"
  • Exchange.SIGNATURE_PUBLIC_KEY_OR_CERT, "CamelSignaturePublicKeyOrCert"

or

最好动态提供密钥存储别名。同样,别名可以在消息标头中提供

  • Exchange.KEYSTORE_ALIAS, "CamelSignatureKeyStoreAlias"

or

标头将设置如下

Exchange unsigned = getMandatoryEndpoint("direct:alias-sign").createExchange();
unsigned.getIn().setBody(payload);
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, "letmein".toCharArray());
template.send("direct:alias-sign", unsigned);
Exchange signed = getMandatoryEndpoint("direct:alias-sign").createExchange();
signed.getIn().copyFrom(unsigned.getOut());
signed.getIn().setHeader(KEYSTORE_ALIAS, "bob");
template.send("direct:alias-verify", signed);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.