目前,我使用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甚至从未在任何地方使用过!
答案 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查找它。