前言

遇到这个问题得说一下笔者的开发环境,笔者所在公司,平时开发用的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异常的更多相关文章

  1. 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问

    记录一个耽误30分钟的一个坑: 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问 报404错误

  2. jdk 版本不一致导致的错误

    平时做项目时难免会从git,svn下载代码或者把别人的项目文件导入到自己的MyEclipse中进行操作,因此会遇到很多问题,常见的有一种是使用的jdk版本不一致造成的报错, 错误案例:     错误提 ...

  3. [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 ...

  4. 记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案

    问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 09-Aug-2019 08:56:06.878 SEVERE [ ...

  5. java.lang.UnsupportedClassVersionError:JDK版本不一致报错

    交代一下背景:公司运行的一个上线项目,打了个补丁发给客户后,反馈说运行不了.把源码拿回来场景重现.贴上报错信息: 08-15 14:13:29 ERROR doPost(jcm.framework.r ...

  6. 【传输协议】发送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 ...

  7. JDK版本过高,导致Eclipse报错

    1.JDK版本如果比较高,而使用的eclipse版本比较低,导致在eclispe中不能识别而报错.   2.点击Attach Source添加rt.jar后,又出现如下错误 3.这样的错误就是由于ec ...

  8. [Jenkins]JDK版本过高导致的java.io.IOException: Remote call on xxxx failed

    ------------------------------------------------------ 如需转载,请注明出处. 文章链接:https://www.cnblogs.com/dzbl ...

  9. jdk版本及编译版本导致服务器部署UnsupportedClassVersionError错误

    java本地代码运行正常,部署到服务器无法运行,错误如下: Caused by: java.lang.UnsupportedClassVersionError: com/teshehui/cms/ac ...

随机推荐

  1. TNS-01201: Listener cannot find executablen 错误

    近期在启动监听器的时候收到了TNS-01201: Listener cannot find executable...的错误提示.这个错误还真是一个一直没有碰到过的错误.咋一看还真不明确是怎么一回事呢 ...

  2. javascript 高级编程系列 - 函数

    一.函数创建 1. 函数声明 (出现在全局作用域,或局部作用域) function add (a, b) { return a + b; } function add(a, b) { return a ...

  3. Fckeditor常见漏洞的挖掘与利用整理汇总

    查看编辑器版本号 FCKeditor/_whatsnew.html ------------------------------------------------------------- 2. V ...

  4. Django中的模板和分页

    模板 在Templates中添加母版: - 母版...html 母版(master.html)中可变化的地方加入: {%block content%}{%endblock%} 在子版 (usermg. ...

  5. Sparksql 取代 Hive?

    sparksql  hive https://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-o ...

  6. tornado之异步web服务二

    前面介绍了异步方法带来的显著性能提升.我们来看下异步使用的方法. 1 首先对于get方法使用tornado.web.asynchronous进行装饰.当使用tornado.web.asynchrono ...

  7. Linux就该这么学--命令集合4(文件目录管理命令)

    1.touch命令用于创建空白文件与修改文件时间:(touch [选项] [文件]) 对于在Linux中的文件有三种时间: 更改时间(mtime):内容修改时间(不包括权限的) 更改权限(ctime) ...

  8. win10搭建selendroid测试环境

    官网对于搭建selendroid列出如下要求: 就如 Junit 一样,Selendroid 可以在 Mac,Linux 和 Windows 上使用.Java 主打的就是跨平台. Java SDK ( ...

  9. POJ2478 Farey Sequence —— 欧拉函数

    题目链接:https://vjudge.net/problem/POJ-2478 Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K To ...

  10. (转)Java经典设计模式(2):七大结构型模式(附实例和详解)

    原文出处: 小宝鸽 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式 ...