Java 7的javax.net.ssl.SSLHandshakeException
2024-08-30 00:11:17
Java 7的javax.net.ssl.SSLHandshakeException
现象:Java7通过httpsURLConnection建立HTTPS连接,异常如下:
javax.net.ssl.SSLHandshakeException: Caused by: Remote host closed connection during handshake Caused by: SSL peer shut down incorrectly
解决方案:客户端需要提高版本到TLSv1.1或TLSv1.2。这可以有2种实现思路,一种是设置JVM的https.protocols参数,另一种是构造支持TLSv1.1或TLSv1.2的SSLContext。
1) 通过-D给出JVM启动参数
-Dhttps.protocols=TLSv1.1,TLSv1.2
2) 必要时,在代码中设置运行时参数
System.setProperty("https.protocols", "TLSv1.1,TLSv1.2");
3) 构造支持TLSv1.1或TLSv1.2的SSLContext
SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
或
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
其中的机理如下:
客户端Java 7默认使用Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1),支持SSLv3或TLSv1,默认通过TLSv1建立到服务器的HTTPS连接。被连接的服务器却只允许使用TLSv1.1或TLSv1.2的HTTPS连接请求。
Java 7经过多次小版本的更新,虽然Sun JSSE provider默认仍然使用TLSv1,但是也支持TLSv1.1或TLSv1.2
特别鸣谢:易生一世
最新文章
- Script component 用法
- jQuery选择器引擎和Sizzle介绍
- Remove Element
- MySQL管理_数据库常用命令
- 读取assets文件夹下图片(ods_interview)
- iOS 开发ALAsset获取图片缩略图
- 例题.点击按钮显示内容+弹窗效果+ajax
- 第2章 Posix IPC
- MVC为模型增加正则表达式
- 关于HTML代码的转义
- 如何在WIN7中关闭JAVA自动更新
- windows 安装maven 环境
- JSP标准标签库(JSTL)--SQL标签库 sql
- Android 跳转权限设置界面的终极方案
- python模块安装查看、包制作
- vue里v-for下的key的作用
- 网站美化:CSS3自定义修改浏览器滚动条
- 2018-2019-2 20175211 实验一《Java开发环境的熟悉》实验报告
- android开发(1):底部导航条的实现 | navigation tab | activity的创建
- Velocity Obstacle