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

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

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

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

如图所示:
这里写图片描述

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

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验证,

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加密过重中拍的图,希望可以给开发的同事得到一点帮助。
这里写图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
javax.net.ssl.SSLHandshakeException: Connection closed by peer通常是由于SSL握手失败引起的。这可能是由于以下原因之一导致的: 1. 服务器不支持SSL协议版本或加密套件。 2. 客户端和服务器之间存在代理,代理可能会干扰SSL握手。 3. 证书问题,例如证书过期或不受信任。 解决此问题的方法包括: 1. 确保服务器支持客户端使用的SSL协议版本和加密套件。 2. 检查代理设置并尝试直接连接服务器。 3. 检查证书是否过期或不受信任,并确保证书链完整。 以下是一些可能有用的代码片段: ```java // 禁用SSL验证 TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } }}; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // 设置代理 System.setProperty("https.proxyHost", "yourProxyServerHostname"); System.setProperty("https.proxyPort", "yourProxyServerPort"); // 打印证书信息 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.connect(); Certificate[] certs = conn.getServerCertificates(); for (Certificate cert : certs) { System.out.println(cert); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范一刀

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值