zoukankan      html  css  js  c++  java
  • Java 7的javax.net.ssl.SSLHandshakeException

    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

    特别鸣谢:易生一世

  • 相关阅读:
    OpenDiscussion_DataDrivenDesign
    WPF Auto LogOff
    Visual Studio模板
    我的TDD实践---UnitTest单元测试
    我的TDD实践---TDD概念篇
    我的TDD实践---SVN架设篇
    我的TDD实践---CI持续集成
    CSharpThinking---C#版本总结(附加三)
    CsharpThinking---代码契约CodeContract(八)
    c++文件偏移
  • 原文地址:https://www.cnblogs.com/lcxhk/p/14097037.html
Copyright © 2011-2022 走看看