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

时间:2016-02-01 17:35:22

标签: rest apache-camel undertow

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

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

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

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

顺便说一下,我尝试设置一个UndertowComponent对象并将该选项添加为组件参数,并尝试通过restConfiguration()在EndpointProperties中添加该选项无效。

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

2 个答案:

答案 0 :(得分:1)

可以通过以下方式分配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);

答案 1 :(得分:0)

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

您需要在rest-dsl配置中将SSL配置为endpointProperty。您可以在http://camel.apache.org/rest-dsl找到更多详细信息。您需要事先将sslContextParameters添加到Camel注册表中,以便endpointProperty可以通过其id查找它。