那么我们有一个一直在工作的SOAP客户机,并且客户最近将服务器切换到使用带有自签名证书的SSL。现在我试图弄清楚如何让我们的客户端获得要使用的正确SSL上下文。我在这里发现了一个相关的问题;但是我不知道如何将它绑定到我的代码中(下面总结了相关部分- DCAMethods[Soap]是cxf生成的接口)。
File tmp = cacheWsdl(UUID.randomUUID().toString(), new URL(wsdlLocation), anzoSSLContext);
// It would be useful to specify the SSLContext here, but I am working around that.
DCAMethods methods = new DCAMethods(tmp.toURI().toURL());
DCAMethodsSoap soapInterface = methods.getDCAMethodsSoap();
// Need to specify the SSLContext for this call.
String rawXmlData = (String) soapInterface.getCopy(connectionId, username, password, documentVersionId, rendition);
我假设您需要具有两种方式身份验证的SSL,并且不对SOAP消息进行签名
CXF对使用客户端证书的SSL连接有自己的支持。它使用Java SSLContext,但所有配置都是通过CXF配置文件 完成的。请参阅步骤4中的答案https://stackoverflow.com/a/37610607/6371459,以查看如何使用spring文件或以编程方式配置CXF。SSL支持的完整文档在这里