当SSL终止后,WSDL绑定URL将协议更改为HTTP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当SSL终止后,WSDL绑定URL将协议更改为HTTP相关的知识,希望对你有一定的参考价值。
我们有一个简单的jax-ws SOAP服务器,由Apache CXF 3.2.6支持,采用独立(自托管)模式,使用嵌入式Jetty。首先使用CXF的wsdl2java
生成服务器wsdl-first。 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
获得。
问题是当通过https://external-name?wsdl
从部署的服务器请求WSDL时,CXF将生成的文件中的location
元素的soapbind:address
属性更改为http://external-name
(将协议从HTTPS更改为HTTP并保留其他所有内容),这会导致生成问题客户端代理,Soap UI等
最糟糕的是,我们的合作伙伴的SOA不能使用我们的服务,它只能从WSDL强制使用已发布的位置。
我们如何解决这个问题,除了删除SSL终止并让CXF自己处理SSL? (这很可怕,因为Java密钥库维护的噩梦并且必须在服务器实例中存储公司范围的证书+私钥)。
您可以在配置中将所需地址设置为publishedEndpointUrl
。见:http://cxf.apache.org/docs/jax-ws-configuration.html
以上是关于当SSL终止后,WSDL绑定URL将协议更改为HTTP的主要内容,如果未能解决你的问题,请参考以下文章
将 Magento 1 url、http 更改为 https 错误混合内容
如何在 Apache Camel 中更改 SOAP Web 服务端点 URL 和 WSDL URL
Zend SOAP:将默认数组元素名称“item”更改为 WSDL 中复杂类型的类名称