异常:javax.net.ssl.SSLException: Received fatal alert: protocol_version

javax.net.ssl.SSLException: Received fatal alert: protocol_version问题解决 完整报错如下: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 122 milliseconds ago. The last packet sent successfully to the server was 119 milliseconds ago. at s 阅读详情
AI摘要

本文介绍了解决因客户端与服务器TLS协议版本不一致导致的连接失败问题的方法。包括升级JDK版本、指定TLS版本等。

异常信息

javax.net.ssl.SSLException: Received fatal alert: protocol_version
	at sun.security.ssl.Alerts.getSSLException(Unknown Source)
	at sun.security.ssl.Alerts.getSSLException(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.recvAlert(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:449)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
	at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
	at org.jsoup.helper.HttpConnection.get(HttpConnection.java:170)

异常原因

先在代码中加入 System.setProperty("javax.net.debug", "all")或设置VM参数-Djavax.net.debug=all,以显示https握手过程,方便调试:

trigger seeding of SecureRandom
done seeding SecureRandom
Ignoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Ignoring unavailable cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Ignoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256
Ignoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
Ignoring unavailable cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
Ignoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
Ignoring unavailable cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
AWT-EventQueue-0, setSoTimeout(3000) called
%% No cached client session
*** ClientHello, TLSv1
RandomCookie:  GMT: 1530541852 bytes = { 25, 106, 142, 179, 195, 87, 163, 223, 105, 170, 57, 91, 102, 15, 218, 48, 52, 167, 231, 83, 190, 177, 54, 27, 232, 111, 11, 140 }
Session ID:  {}
Cipher Suites: [TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA]
Compression Methods:  { 0 }
Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
Extension server_name, server_name: [host_name: github.com]
***
[write] MD5 and SHA1 hashes:  len = 168
0000: 01 00 00 A4 03 01 5B 3A   37 1C 19 6A 8E B3 C3 57  ......[:7..j...W
0010: A3 DF 69 AA 39 5B 66 0F   DA 30 34 A7 E7 53 BE B1  ..i.9[f..04..S..
0020: 36 1B E8 6F 0B 8C 00 00   2A 00 33 C0 04 00 16 00  6..o....*.3.....
0030: 05 C0 03 C0 11 C0 02 C0   07 C0 13 C0 08 C0 0C 00  ................
0040: FF C0 0D C0 0E C0 09 00   2F C0 12 00 04 00 32 00  ......../.....2.
0050: 13 00 0A 01 00 00 51 00   0A 00 34 00 32 00 17 00  ......Q...4.2...
0060: 01 00 03 00 13 00 15 00   06 00 07 00 09 00 0A 00  ................
0070: 18 00 0B 00 0C 00 19 00   0D 00 0E 00 0F 00 10 00  ................
0080: 11 00 02 00 12 00 04 00   05 00 14 00 08 00 16 00  ................
0090: 0B 00 02 01 00 00 00 00   0F 00 0D 00 00 0A 67 69  ..............gi
00A0: 74 68 75 62 2E 63 6F 6D                            thub.com
AWT-EventQueue-0, WRITE: TLSv1 Handshake, length = 168
[Raw write]: length = 173
0000: 16 03 01 00 A8 01 00 00   A4 03 01 5B 3A 37 1C 19  ...........[:7..
0010: 6A 8E B3 C3 57 A3 DF 69   AA 39 5B 66 0F DA 30 34  j...W..i.9[f..04
0020: A7 E7 53 BE B1 36 1B E8   6F 0B 8C 00 00 2A 00 33  ..S..6..o....*.3
0030: C0 04 00 16 00 05 C0 03   C0 11 C0 02 C0 07 C0 13  ................
0040: C0 08 C0 0C 00 FF C0 0D   C0 0E C0 09 00 2F C0 12  ............./..
0050: 00 04 00 32 00 13 00 0A   01 00 00 51 00 0A 00 34  ...2.......Q...4
0060: 00 32 00 17 00 01 00 03   00 13 00 15 00 06 00 07  .2..............
0070: 00 09 00 0A 00 18 00 0B   00 0C 00 19 00 0D 00 0E  ................
0080: 00 0F 00 10 00 11 00 02   00 12 00 04 00 05 00 14  ................
0090: 00 08 00 16 00 0B 00 02   01 00 00 00 00 0F 00 0D  ................
00A0: 00 00 0A 67 69 74 68 75   62 2E 63 6F 6D           ...github.com
[Raw read]: length = 5
0000: 15 03 01 00 02                                     .....
[Raw read]: length = 2
0000: 02 46                                              .F
AWT-EventQueue-0, READ: TLSv1 Alert, length = 2
AWT-EventQueue-0, RECV TLSv1 ALERT:  fatal, protocol_version
AWT-EventQueue-0, called closeSocket()
AWT-EventQueue-0, handling exception: javax.net.ssl.SSLException: Received fatal alert: protocol_version
AWT-EventQueue-0, called close()
AWT-EventQueue-0, called closeInternal(true)

由上边握手日志可知,客户端使用的是TLSv1协议,查看JDK版本是1.7,根据Oracle文档知各版本JDK默认使用的TLS协议如下:

 JDK 8
(March 2014 to present)
JDK 7
(July 2011 to present)
JDK 6
(2006 to end of public updates 2013)
TLS ProtocolsTLSv1.2 (default)
TLSv1.1
TLSv1
SSLv3
TLSv1.2
TLSv1.1
TLSv1 (default)
SSLv3

TLS v1.1 (JDK 6 update 111 and above)
TLSv1 (default)
SSLv3
JSSE Ciphers: Ciphers in JDK 8 Ciphers in JDK 7 Ciphers in JDK 6
Reference:JDK 8 JSSEJDK 7 JSSEJDK 6 JSSE
Java Cryptography Extension, Unlimited Strength (explained later)JCE for JDK 8JCE for JDK 7JCE for JDK 6

通过火狐浏览器打开该网页,发现其使用的TLS协议是TLSv1.2:


解决办法

知道了原因以后就好找解决方法了:

1:把JDK升级到1.8。由于该网站使用的是TLSv1.2协议,JDK1.8默认是该协议,故把客户端JDK升级到1.8可以解决该问题。

2:在JDK1.7客户端代码中指定使用的协议System.setProperty("https.protocols", "TLSv1.2")或

System.setProperty("jdk.tls.client.protocols", "TLSv1.2")。注意,该方法有时候会莫名的失效,原因未知。

3:在VM参数中设置-Dhttps.protocols=TLSv1.2或-Djdk.tls.client.protocols=TLSv1.2。注意,该方法有时候会莫名的失效,原因未知。

4:使用第三方库了,参考http://ligaosong.iteye.com/blog/2356346

5:使用httpclient,其支持配置使用指定协议

ssl证书双向认证访问https—解决javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar即可。下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,但经过我一步步踩坑,到最终解决问题,我发现问题的原因并不完全和上面描述的一直,下面我一步步讲解我的解决过程。我是第三种,替换可jar文件,就可以运行了,撒花撒花撒花。别灰心,别气馁,继续Google。,那就把TLSv1.0去掉吧。 阅读详情

相关推荐

Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案

的核心是协议版本不匹配显式指定客户端 / 服务器支持的协议(JVM 参数、代码、组件专属参数)确保双方协议列表存在交集(通过调试日志或 OpenSSL 验证)遵循官方文档与安全规范(禁用旧协议、使用合规加密套件)通过以上方案,可高效解决协议兼容问题,同时提升系统安全性。实际开发中需结合具体场景,优先使用组件专属配置,避免依赖通用方案导致的隐藏问题。关键词:Java 异常、SSLException、TLS 协议、协议版本兼容、HTTPS 配置分类:Java 开发 | 网络编程 | 安全配置。

专注于 Java 后端架构、微服务、分布式、前端及 AI 领域的技术分享,是开发者获取硬核知识、交流实战经验的专业博客。 2470

javax.net.ssl.SSLException: Received fatal alert: protocol_version解决

javax.net.ssl.SSLException解决方法

心寒的博客 2万+

QDMA工程搭建/windows驱动编译与性能测试

请注意,根据您的目标操作系统,您可能需要在windows启动配置中启用测试签名的驱动程序,以便启用此驱动程序的安装。右键单击设备,选择更新驱动程序软件,然后选择构建的QDMA驱动程序的文件夹(通常为。创建一个新工程,在IP Catalog中搜索QDMA,双击创建qdma ip核。驱动程序安装安装驱动程序最简单的方法是通过Windows的“设备管理器”。如果系统提示未经验证的驱动程序发布者,请选择无论如何安装此驱动程序软件。本节主要介绍QDMA驱动在Windows系统的源文件、编译和安装过程。

qq_28455081的博客 2287

SSL:javax.net.ssl.SSLException: Received fatal alert: protocol_version

javax.net.ssl.SSLException: Received fatal alert: protocol_version

wimpykids的博客 9079

用Coze平台30分钟打造《花光10亿》小游戏:零代码AI开发实战

本文详细介绍了如何利用字节跳动推出的Coze平台,在30分钟内零代码开发一款名为《花光10亿》的AI小游戏。通过配置提示词、集成图像生成插件、构建自动化工作流以及使用数据库功能,即使没有编程基础的用户也能快速将创意转化为可交互的智能应用,体验AI开发的便捷与高效。

weixin_29313547的博客 206

Langchain4j 文档处理实战:从加载到分割的完整流程解析

本文详细解析了使用Langchain4j进行文档处理的完整流程,涵盖从文档加载、解析到分割的核心步骤。通过实战代码示例,重点介绍了如何利用文档分割器将大文档切割为适合大语言模型处理的片段,并提供了参数调优与避坑指南,帮助Java开发者高效构建AI应用的数据处理基础。

smartcontract5的博客 542

Creator打包报 javax.net.ssl.SSLException: Received fatal alert: protocol_version异常

文章目录1、发现问题2、知识准备与问题分析2.1、知识准备2.1.1、知识准备 什么是TLS2.1.2、TLS有哪些版本、JDK默认支持哪些版本?2.1.3、JDK支持的tls版本:2.2、问题分析:3、解决问题4、结束语 1、发现问题   今天在家里打包apk时,上来就报了异常,仔细一看是如下错误: Exception in thread “main” java.lang.RuntimeExc...

对酒当歌﹏✍ 7027

LVGL8.x 实体按键与Keypad驱动的无缝对接实战

本文详细解析了LVGL8.x中实体按键与Keypad驱动的两种对接方案:坐标映射的Button方式与事件驱动的Keypad方式。重点阐述了如何模块化裁剪lv_port_indev.c模板文件,并深入讲解了Keypad驱动与Group焦点管理系统的核心协作机制,为无触摸屏的嵌入式设备提供流畅的UI交互解决方案。

weixin_29164497的博客 446

javax.net.ssl.SSLException: Received fatal alert: protocol_version异常处理

最近在做一个接口请求的时候,遇到javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure这个异常,怎么也处理不了,最后发现是jar包的问题,在通过https访问的时候安全机制策略有问题,这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,替换以后...

qq_23000805的博客 7331

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 287

从零实战:模拟Soul/陌陌附近的人接口爬虫(设备指纹·加密逆向·动态代理全解)

在移动互联网流量见顶的今天,LBS(基于位置的服务)社交平台——尤其是Soul和陌陌——依然掌握着海量高活用户的地理位置画像、兴趣标签、在线活跃时段等敏感数据。对于市场调研、流量运营、甚至是城市热力分析而言,“附近的人”接口是一个极具价值的入口。然而,这两款App均采用全参数加密 + 设备指纹风控 + WAF动态防御的三重护城河。直接使用Requests库调用公开API无异于以卵击石。本文将从逆向工程视角出发,完整还原一套可用的附近人信息采集方案,涵盖:抓包与流量分析(绕过SSL Pinning)

2201_76125261的博客 211

Java网络请求异常:javax.net.ssl.SSLException: Received fatal alert: protocol_version

目前主流的JDK和SSL/TLS版本支持情况

weixin_41905643的博客 1416

抖音 webmssdk 签名算法解析:X-Dynosaur / X-Gnarly / X-Bogus 生成原理

它只依赖设备指纹/环境编码与随机数,与 query 内容无关,因此可以独立于 Dynosaur/Gnarly 生成。

猫敷雪 197

jdk1.7 使用Protocol 版本为 TLSv1.2 异常:javax.net.ssl.SSLException: Received fatal alert: protocol_version...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34194317的博客 1991

Python爬虫实战:扒取专利数据库核心信息,我用这招搞定反爬+数据结构化(附完整可运行代码)

这套爬虫方案从「实际需求」出发,解决了专利数据库抓取的核心痛点:反爬突破、数据结构化、标题创作。核心价值不在于代码多复杂,而在于「实用」——我用这套代码半天就抓取了800+条Python爬虫相关专利,比手动效率提升了几十倍。最后想说:爬虫技术的核心是「解决问题」,而不是炫技。专利数据能帮我们快速了解行业技术趋势,尤其是程序员,从专利中扒出的核心逻辑,远比零散的博客文章更系统。希望这篇实战分享能帮到有需要的小伙伴,也欢迎在评论区交流专利爬虫的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2127

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

https如何设置TLS协议版本 javax.net.ssl.SSLException: Received fatal alert: protocol_version)

1.什么是TLS SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”) 为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。...

6万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

请求接口报错javax.net.ssl.SSLException: Received fatal alert: protocol_version

报错变成了:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。重新测试,问题解决。

weixin_50306341的博客 3758

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version

Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version

面朝大海,春暖花开 1480

javax.net.ssl.SSLException: Received fatal alert: protocol_version

protocol_version 异常

GuaGea的博客 4879

JAVA连接MySQ报错:Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version

https://www.cnblogs.com/pxblog/p/14675058.html

u011250186的博客 562

https Java SSL Exception protocol_version

在java代码中,使用HttpClient爬取https页面时,遇到了这个bug:javax.net.ssl.SSLException: Received fatal alert: protocol_version 先奉上初始的代码: 1 /** 2 * 3 */ 4 package com.tcl.mibc.weathercrawler; ...

weixin_30567471的博客 2526

调用post接口解决Received fatal alert: protocol_version; nested exception is javax.net.ssl.SSLException问题

调用post接口失败问题

qq_41755988的博客 1669

Java TLS握手失败:protocol_version异常诊断与修复实战

TLS/SSL协议是保障网络通信加密的基础技术,通过握手协商建立安全信道。其核心原理涉及协议版本、密码套件等参数的匹配,当客户端与服务端支持的协议版本不一致时,就会触发握手失败。在Java开发中,这一问题常表现为javax.net.ssl.SSLException: protocol_version异常,直接影响微服务间调用和API通信的可靠性。排查需综合JDK版本、安全策略及代码配置,通过设置jdk.tls.client.protocols系统属性或显式创建SSLContext实例,可强制指定TLS 1.

www.itmmd.com 326

解决webMagic0.7.3 出现javax.net.ssl.SSLException: Received fatal alert: protocol_version的问题

原因不多分析。 WebMagic-0.7.3版本默认的HttpClient只会用TLSv1去请求,对于某些只支持TLS1.2的站点(例如 https://juejin.im/) ,就会报错。 贴上作者原文: https://github.com/code4craft/webmagic/issues/701 如果懒得编译,我这有编译好了的jar包,下载替换原jar就可以使用了。 https://pa...

hc的博客 629
上一篇: 异常:Oracle插入语句中&后的字符串被当做变量
下一篇: Anaconda 安装第三方库失败的解决办法
凉茶微凉
博客等级 码龄18年 103粉丝 83原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值