Error(12) 解决javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

温馨小提示:本文基于jdk8环境

错误日志如下:

网上说:这是由于jdk安全性机制而导致访问https会报错

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
	at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at us.codecraft.webmagic.downloader.HttpClientDownloader.download(HttpClientDownloader.java:85)
	at us.codecraft.webmagic.Spider.processRequest(Spider.java:404)
	at us.codecraft.webmagic.Spider.access$000(Spider.java:61)
	at us.codecraft.webmagic.Spider$1.run(Spider.java:320)
	at us.codecraft.webmagic.thread.CountableThreadPool$1.run(CountableThreadPool.java:74)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

解决

  1. 下载jar包:https://www.oracle.com/java/technologies/javase-jce8-downloads.html

    温馨小提示:也可以到 https://gitee.com/zhengqingya/java-developer-document 中下载

    在这里插入图片描述

  2. 替换jdk里默认的jar包即可,位置在jdk1.8.0_111\jre\lib\security目录下
    在这里插入图片描述

javax.net.ssl.SSLException: Unsupported or unrecognized SSL message是一个SSL异常,它表示在进行SSL握手时收到了不支持或无法识别的SSL消息。这可能是由于以下原因导致的: 1. 协议不匹配:客户端和服务器之间的SSL协议版本不匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 代理问题:如果在客户端和服务器之间存在代理服务器,可能会导致SSL握手失败。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 证书问题:客户端或服务器的SSL证书可能无效或过期。可以尝试更新证书或使用有效的证书来解决此问题。 4. 密钥问题:客户端或服务器的SSL密钥可能无效或不匹配。可以尝试重新生成密钥或使用正确的密钥来解决此问题。 解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法包括: 1. 检查SSL协议版本:确保客户端和服务器之间的SSL协议版本匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置:如果存在代理服务器,请确保代理服务器正确配置以支持SSL。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新证书:检查客户端和服务器的SSL证书是否有效且未过期。如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成密钥:如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。 范例:<<引用:检查SSL协议版本是否匹配。[^1]。引用:检查代理设置是否正确。[^2]。引用:更新SSL证书。[^3]。引用:重新生成SSL密钥。[^4]。 以下是解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法: 1. 检查SSL协议版本 - 确保客户端和服务器之间的SSL协议版本匹配。 - 可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置 - 如果存在代理服务器,请确保代理服务器正确配置以支持SSL。 - 可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新SSL证书[^3] - 检查客户端和服务器的SSL证书是否有效且未过期。 - 如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成SSL密钥[^4] - 如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郑清

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

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

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

打赏作者

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

抵扣说明:

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

余额充值