如何为 camel-undertow 配置 sslContextParameters 以与其余 DSL 一起使用?

How do I configure sslContextParameters for camel-undertow to use with the rest DSL?

目前,我正在使用 camel-jetty 来设置其余的 DSL,它非常简单,我创建了一个 SSLContextParameters 对象,然后像这样传递它:

JettyHttpComponent jetty = context.getComponent("jetty", JettyHttpComponent.class);
jetty.setSslContextParameters(sslContextParameters);

就是这样,但是在 Undertow 中,没有任何方法可以做到这一点,在 the documentation 中唯一提到过一次的是它支持 sslContextParameters 选项,但是没有方法或任何东西可以设置这样的选项。

如何将我的 sslContextParameters 对象分配给 Undertow 组件,以便我可以将 SSL 连接与其余 DSL 一起使用?

顺便说一句,我试过设置一个 UndertowComponent 对象并将选项添加为组件参数,还尝试通过 restConfiguration() 在 EndpointProperties 中添加选项,但无济于事。

我也浏览了 2.16.1 的 github 源代码,这是 maven central 中最新的,我只在 UndertowRegistry 和 setSslContext 中看到对 ssl 上下文的引用 setter甚至从未在任何地方使用过!

您不能在 camel-undertow 的组件级别设置 SSL。我已经记录了一张票,以便在即将发布的版本中实现这一点:https://issues.apache.org/jira/browse/CAMEL-9559

您需要在 rest-dsl 配置中将 SSL 配置为 endpointProperty。您可以在以下位置找到更多详细信息: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);