【发布时间】:2018-02-15 22:13:11
【问题描述】:
我使用 Apache Camel CXF 作为生产者来调用 SOAP Web 服务。我不使用 Spring 配置,而是以编程方式完成所有操作(我是初学者,不想同时学习 Spring 和 Apache Camel)。 Web 服务使用带有自签名证书的 SSL。我将它添加到信任库,并希望能够将其添加到 CxfEndpoint,类似于我使用 https4 的方式:
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("src/main/resources/truststore.jks");
ksp.setPassword("...");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("...");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
CamelContext context = new DefaultCamelContext();
context.addRoutes(routeBuilder);
HttpComponent httpComponent = context.getComponent("https4", HttpComponent.class);
httpComponent.setSslContextParameters(scp);
– 但这似乎不适用于 CxfComponent。我找到了很多关于使用 Spring 添加 TlsClientParameters 和配置 CxfEndpoint 的文档,例如:apache camel cxf https not working 在这里Calling secure webservice using CXF and Camel。但是,我没有找到任何关于如何像使用 https4 甚至在路由定义中那样简单地将信任库添加到组件的提示,即:
from(ENDPOINT_URI)
.setProperty(SecurityConstants.PASSWORD, constant(PASSWORD))
.setProperty(SecurityConstants.USERNAME, constant(USERNAME))
.to("cxf://" + SERVICE_URL + "?" +
"wsdlURL=" + WSDL_URL + "&" +
"serviceName=" + SERVICE_NAME + "&" +
"portName=" + PORT_NAME + "&" +
"dataFormat=CXF_MESSAGE&" +
"synchronous=true&" +
"defaultOperationName=" + DEFAULT_OPERATION_NAME)
.streamCaching();
我认为这一定是一个非常简单的问题,所以我仍然希望有一些简单的方法来简单地添加信任库(甚至接受任何证书,因为它与我们的用例并不真正相关)。如果有一种简单的程序化方式,我会非常高兴。有人知道吗?
【问题讨论】:
标签: apache ssl apache-camel cxf