[工作笔记]JDK版本不同导致的SSL异常
前言
遇到这个问题得说一下笔者的开发环境,笔者所在公司,平时开发用的web容器是jboss,使用的JDK是oracle的JDK,但是测试和生产环境用的是WAS,JDK用的是IBM的JDK,由于项目的不同,测试环境所安装的web容器和JDK版本都并不相同。这个也是笔者遇到问题的原因所在。
笔者在公司负责一个项目的开发,该项目有一个功能需要调用到公司另一个项目的接口,而那个项目提供的接口是基于HTTPS的,所以笔者在进行调用的时候,使用了JDK提供的SSL连接进行了请求。
SSLContext.getInstance(“SSL”);
该代码,笔者在自己本机的JBoss上测试过,并没有问题。可是,发布到was里面之后,程序一直没法成功调用接口,通过日志追踪后,发现程序在服务器运行的时候后台报了异常,该异常如下:
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshank
握手失败,网上有人说,该异常是因为证书的原因,可是笔者尝试过后发现,该说法并不对应笔者所描述的场景,最后在同事的帮助下找到了原因。
该问题出现的原因在于SSL协议的版本不同。发现问题之后,笔者分析了一下具体情况。由于项目的原因,笔者现在用的JDK版本还是1.5的,同时,笔者去调的项目也是个老项目,用的JDK版本也是1.5的。所以当笔者通过本地测试的时候,SSL的请求方和接收方的版本是一致的,并没有问题。可是由于项目的扩容,笔者项目的测试环境前阵子进行了迁移,新的测试环境采用的是IBM的JDK1.6。因为JDK版本不同,默认采用的握手协议不同,所以导致两边程序进行握手的时候会失败。
仔细查询了一下资料后发现,原来oracle的JDK默认采用的是TLSv1和TLSv2进行尝试握手连接的,而IBM新的JDK采用的是SSLv3,新老版本还不一样。
详细的资料地址:http://www-01.ibm.com/support/docview.wss?uid=swg21687173
该问题的解决方法有两个:
方法一:修改获取SSL连接的的代码(笔者使用的方法,简单)
SSLContext.getInstance(“TLS”);
方法二:更新IBM的JDK
在上面给出的链接中,其实IBM已经意识到自己的问题,也给出了另外一个补丁,据说更新后就能成功(笔者没尝试过( ̄▽ ̄)”)
本文章同步发布至 http://blog.e65535.com/2017/01/15/ssl-excepiton/
[工作笔记]JDK版本不同导致的SSL异常的更多相关文章
- 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问
记录一个耽误30分钟的一个坑: 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问 报404错误
- jdk 版本不一致导致的错误
平时做项目时难免会从git,svn下载代码或者把别人的项目文件导入到自己的MyEclipse中进行操作,因此会遇到很多问题,常见的有一种是使用的jdk版本不一致造成的报错, 错误案例: 错误提 ...
- [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher 问题--MyEclipse设置JDK版本
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML doc ...
- 记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案
问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 09-Aug-2019 08:56:06.878 SEVERE [ ...
- java.lang.UnsupportedClassVersionError:JDK版本不一致报错
交代一下背景:公司运行的一个上线项目,打了个补丁发给客户后,反馈说运行不了.把源码拿回来场景重现.贴上报错信息: 08-15 14:13:29 ERROR doPost(jcm.framework.r ...
- 【传输协议】发送https请求,由于客户端jdk版本过高,服务端版本低。导致异常:javax.net.ssl.SSLHandshakeException: Server chose SSLv3, but that protocol version is not enabled or not supported by the client.
本地环境jdk为1.8,服务器使用jdk版本未知.但发送https请求,抛出如下异常,解决方案. 一:发送异常内容如下 javax.net.ssl.SSLHandshakeException: Ser ...
- JDK版本过高,导致Eclipse报错
1.JDK版本如果比较高,而使用的eclipse版本比较低,导致在eclispe中不能识别而报错. 2.点击Attach Source添加rt.jar后,又出现如下错误 3.这样的错误就是由于ec ...
- [Jenkins]JDK版本过高导致的java.io.IOException: Remote call on xxxx failed
------------------------------------------------------ 如需转载,请注明出处. 文章链接:https://www.cnblogs.com/dzbl ...
- jdk版本及编译版本导致服务器部署UnsupportedClassVersionError错误
java本地代码运行正常,部署到服务器无法运行,错误如下: Caused by: java.lang.UnsupportedClassVersionError: com/teshehui/cms/ac ...
随机推荐
- 笔记03 MVVM 开发的几种模式(WPF)
转自http://www.cnblogs.com/buptzym/p/3220910.html 在WPF系(包括SL,WP或者Win8)应用开发中,MVVM是个老生常谈的问题.初学者可能不会有感觉,但 ...
- fedora delete openJDK
博客分类: linux 由于Fedora系统安装的时候会自带OpenJDK,安装完系统后 java -version 会显示 [root@localhost bin]# java -versio ...
- css3背景及字体渐变
1.背景渐变: .linear { width: 100%; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,sta ...
- window下Jira+SQL Server部署+汉化+破解
网上很多都是jira+mysql部署的文章,由于我现在有需求要用SQL Server数据库,因此就动手试了一下,参考网上许多文章,再加上自己的几次尝试,很快也成功了,分享出来. 全文章节: 一.事前准 ...
- ffmpeg编码常见问题排查方法
播放问题排查: 一旦我们遇到视频播放不了,第一件事,就是要找几个别的播放器也播放看看,做一下对比测试,或者对码流做一些基础分析,以便更好的定位问题的源头,而各个平台比较常见的播放/分析工具有如下几个: ...
- javaScript中innerHTML,innerText,outerHTML,outerText的区别
开头说下innerText和outerText只在chrome浏览器中有效 定义和用法 innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,包括标签. 来看代码 <!DOC ...
- Operation not permitted - /usr/bin/pod
问题描述:执行sudo gem install cocoapods, 提示出错:While executing gem ... (Errno::EPERM) Operation not per ...
- Android Studio 卡顿解决
每次升级/安装 Android Studio 之后最好都修改一下这个参数:到 Android Studio 安装目录,找到 bin/studio(64?).vmoptions(文件名可能因操作系统而不 ...
- Xmpp学习之Asmack取经-asmack入门(一)
1.XMPPConnection:它主要是用来创建一个跟XMPP服务端的Socket连接.它是与Jabber服务端的默认连接并且已经在RFC 3920中精确定义过了.示例如下: XMPPConnect ...
- Looksery Cup 2015 C. The Game Of Parity —— 博弈
题目链接:http://codeforces.com/problemset/problem/549/C C. The Game Of Parity time limit per test 1 seco ...