在SSL终止后面,WSDL绑定URL将协议更改为HTTP?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (186)

我们有一个简单的jax-ws SOAP服务器,由Apache CXF 3.2.6支持,采用独立(自托管)模式,使用嵌入式Jetty。首先使用CXF生成服务器wsdl-first wsdl2java。WSDL是类路径上的文件,该物理WSDL文件具有元素https://....location属性soapbind:address

启动时,服务器发布到http://0.0.0.0:8080。服务器也位于SSL终端后面,路由https://external-name- > SSL终止 - > http://internal-name:8080,因此外部服务及其WSDL可用于https://external-name

问题是当从部署的服务器请求WSDL时https://external-name?wsdl,CXF 将结果文件中元素的location属性更改soapbind:addresshttp://external-name(将协议从HTTPS更改为HTTP并保留其他所有内容),这会导致生成客户端代理问题,Soap用户界面等

最糟糕的是,我们的合作伙伴的SOA不能使用我们的服务,它只能从WSDL强制使用已发布的位置。

我们如何解决这个问题,除了删除SSL终止并让CXF自己处理SSL?(这很可怕,因为Java密钥库维护的噩梦并且必须在服务器实例中存储公司范围的证书+私钥)。

提问于

扫码关注云+社区

领取腾讯云代金券