目前,我正在使用camel-jetty来设置其余的DSL,这非常简单,我创建了一个SSLContextParameters对象,然后像这样传递它:
JettyHttpComponent jetty = context.getComponent("jetty", JettyHttpComponent.class);
jetty.setSslContextParameters(sslContextParameters);
就是这样,但是在Undertow中,没有任何方法可以做到这一点,文档中唯一提到一次的是它支持sslContextParameters选项,但是没有方法或任何方法可以设置这样的选项。
如何将 sslContextParameters 对象分配给 Undertow 组件,以便我可以将 SSL 连接与其余 DSL 一起使用?
顺便说一下,我尝试设置一个UndertowComponent对象并将该选项添加为组件参数,并且还尝试通过restConfiguration((在EndpointProperties中添加该选项,但无济于事。
我还浏览了 2.16.1 的 github 源代码,这是 maven Central 中的最新源代码,我只在 UndertowRegistry 中看到对 ssl 上下文的引用,而 setSslContext setter 甚至从未在任何地方使用过!
不能在骆驼暗流的组件级别设置 SSL。我已经记录了一张票证,以便在即将发布的版本中实现这一点:https://issues.apache.org/jira/browse/CAMEL-9559
您需要在 rest-dsl 配置中将 SSL 配置为端点属性。您可以在以下位置找到更多详细信息:http://camel.apache.org/rest-dsl。并且您需要事先将 sslContextParameters 添加到 Camel 注册表中,以便 endpointProperty 可以通过其 id 查找它。
SSL 上下文可以通过以下方式分配:
UndertowComponent uc = new UndertowComponent(context);
KeyStoreParameters trust_ksp = new KeyStoreParameters();
trust_ksp.setResource("/cacerts.jks");
trust_ksp.setPassword("changeit");
TrustManagersParameters trustp = new TrustManagersParameters();
trustp.setKeyStore(trust_ksp);
SSLContextParameters scp = new SSLContextParameters();
scp.setTrustManagers(trustp);
uc.setSslContextParameters(scp);