weblogic发送https请求报:org.springframework.web.client.ResourceAccessException:
I/O error on POST request for "https:xxxxxxxxxxxxxxxxxxxxxxx":
Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier,
hostname=agent.yrmpay.com.;
nested exception is javax.net.ssl.SSLKeyException: Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier, hostname=agent.yrmpay.com.
原因是默认情况下,当 WebLogic Server 实例充当 SSL 客户端角色(它会尝试通过 SSL 连接到其他服务器或应用程序)时,它会验证 SSL 服务器在数字证书中返回的主机名是否与用于连接 SSL 服务器的 URL 主机名相匹配。如果主机名不匹配,则删除此连接。
我是这样解决的:
找到weblogic的启动脚本:我的是startWebLogic.sh 然后在脚本文件里加入一条命令:
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.security.SSL.ignoreHostnameVerification=true
重启解决。
网上搜到还有两种方法:
2.-Dweblogic.security.SSL.hostnameVerifier=examples.security.sslclient.NulledHostnameVerifier
用此设置更改主机名验证,类examples.security.sslclient.NulledHostnameVerifier是weblogic的一个实现,用于取消主机名验证;另可以指定自定义主机名验证器类名,该类必须实现weblogic.security.SSL.HostnameVerifier 接口。
3.设置布署主机的SSL选项主机认证为无。(这可能会导致安全问题)
这两种方法我没试,不过应该也可以,都是一样的目的。