xml - 如何在骆驼的 sslContextParameter 中覆盖密钥库别名
问题描述
我们正在尝试使用带有 Tomcat 的骆驼 2.22.0 中的 SSLContextParameter 来处理 https4 请求。
我们的目标是只为具有多个别名的私钥/公钥使用一个密钥库。我们在加载camel时加载spring ssContextParameter,并且在定义hhtps4 Endpoint时我们只想使用别名,而不为我们的路由中的每个Endpoint定义一个新的sslContextParameter(〜50个路由)。
<camel:sslContextParameters id="sslAPPContextParameters"
xmlns="http://camel.apache.org/schema/spring" >
<camel:trustManagers>
<camel:keyStore password="${truststore.jks.file.password}"
resource="${truststore.jks.file.location}" />
</camel:trustManagers>
<camel:keyManagers>
<camel:keyStore password="${keystore.jks.file.password}"
resource="${keystore.jks.file.location}" />
</camel:keyManagers>
</camel:sslContextParameters>
</beans>
可能吗 ?我找到了“sslContextParameters/@certAlias”,但似乎需要一个新的 sslContextParameter 定义才能使用它,这不是我需要的,因为我们有大量的 camelRoute。
提前致谢。
解决方案
我所知道的:
- 每个 sslContextParameters 实例有一个(且只有一个)证书别名
- HTTP4 组件每个组件仅支持一个 SSLContextParameters 实例(在http://camel.apache.org/http4.html中有明确说明)
这意味着您的 Camel 路由共享相同的 SSL conf,因此在多个位置(并且使用不同的值)覆盖证书别名不是一个好主意。
恐怕唯一的解决方案是定义 HTTP 组件的 N 个变体及其相应的 SSL conf:
<bean id="httpX" class="org.apache.camel.component.http4.HttpComponent">
<property name="sslContextParameters" ref="sslContextParams1"/>
</bean>
<bean id="httpY" class="org.apache.camel.component.http4.HttpComponent">
<property name="sslContextParameters" ref="sslContextParams2"/>
</bean>
然后在您的 https 端点中使用适当的端点
推荐阅读
- excel - 数据透视表 VBA 即将为空
- c# - 金融产品模型使用什么=>十进制或双精度
- url - Latex-url链接操作
- javascript - 如何从单选按钮触发 React.ChangeEvent?
- typescript - 基于前一个 arg 值的函数 arg 类型
- odata - 在 ODATA 中使用类型转换处理模型引用
- c++ - 从相对于项目文件夹的不同 cpp 文件访问同一文件夹
- python - 使用 Amazon SNS 发布通知
- c++builder - 如何查询 TFDMemTable
- ios - iOS 15 - Xcode 13-RC 警告:-[NSKeyedUnarchiver validateAllowedClass:forKey:]