javax.net.ssl.SSLHandshakeException: Remote host closed connection during han 报错解决

2021-08-10 11:31:24 浏览数 (1)

javax.net.ssl.SSLHandshakeException: Remote host closed connection during han

北京某银行信用卡网申开发团队发来协助请求,内容是这样的:

内网中应用服务器要实现某一功能,需要从外网银联端获取一段数据,而内网应用服务器与外网银联服务器的网络是不通的,需要在内网前端配置一台代理服务器,将内网应用与外网银联接通网络,另外银联服务端提供的https协议的接口。

如图所示:

代理服务器预装的IBM Http Server, 他们之前配置了代理,而且还在代理server加了证书,这些都是多余的,代理server只提供了放开网络的功能,不需要证书,于是全给删了,只需要配置正向代理即可:

代码语言:javascript复制
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Listen 7701
NameVirtualHost *:7701
<VirtualHost *:7701>
        ProxyRequests On
        ProxyVia On
        <Proxy *>
                Order deny,allow
                Deny from all
                allow from 192.168.126.100
			    allow from 192.168.126.101
        </Proxy>
</VirtualHost>

配置完,重启服务,在应用server验证,

代码语言:javascript复制
curl -x 192.168.10.10 http://www.baidu.com 

可以获取百度首页数据。证明正向代理正常。

关键问题来了!

应用在向银联发请求是总是报错

javax.net.ssl.SSLHandshakeException: Remote host closed connection during han

下面是解决方案,没有图全是字

看报错首先就能想到SSL加密的问题,问题就出在应用的代码中了,给出分析并建议:

  1. 因为对端开放的是https加密接口,应用发出的请求也需要是https请求
  2. 使用浏览器验证网银https域名,可以打开页面,但是!浏览器提示不安全证书,应该是一个自签证书,浏览器可以点击“添加例外”或“继续浏览”来打开页面,但应用发出的请求无法模拟浏览器的步骤,所以在代码中需要修改“忽略证书安全验证”或“绕过证书验证”。
  3. 获取对端SSL加密方式,应用代码中需要配置相同的加密方式。 给出三个方面的建议,最终,在SSL加密方式上作了修改,问题得到解决。

下图是修改SSL加密过重中拍的图,希望可以给开发的同事得到一点帮助。

0 人点赞