Linux javax.net.ssl.SSLException:收到致命警报:protocol_版本,Java1.8.0_201使用TLSv1进行握手,而不是默认的TLSv1.2

Linux javax.net.ssl.SSLException:收到致命警报:protocol_版本,Java1.8.0_201使用TLSv1进行握手,而不是默认的TLSv1.2,linux,sslexception,Linux,Sslexception,我正在尝试构建一个java代码并运行jar文件。我使用Java 1.8.0_201来运行jar,但在运行时,由于握手失败,无法从服务器生成令牌。这主要是由于协议不匹配造成的。(客户端在TLSv1中发送请求,服务器在TLSv1.2中返回,导致协议不匹配) 问题是为什么java 1.8使用TLSv1,而默认值是TLSv1.2。 我已经检查了/jre/lib/security/java.security文件,那里的配置似乎很好 Ignoring unsupported cipher suite: SS

我正在尝试构建一个java代码并运行jar文件。我使用Java 1.8.0_201来运行jar,但在运行时,由于握手失败,无法从服务器生成令牌。这主要是由于协议不匹配造成的。(客户端在TLSv1中发送请求,服务器在TLSv1.2中返回,导致协议不匹配)

问题是为什么java 1.8使用TLSv1,而默认值是TLSv1.2。 我已经检查了
/jre/lib/security/java.security
文件,那里的配置似乎很好

Ignoring unsupported cipher suite: SSL_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
Ignoring unsupported cipher suite: SSL_ECDH_RSA_WITH_AES_128_GCM_SHA256
Ignoring unsupported cipher suite: SSL_DHE_RSA_WITH_AES_128_GCM_SHA256
Ignoring unsupported cipher suite: SSL_DHE_DSS_WITH_AES_128_GCM_SHA256
%% No cached client session
ALPNJSSEExt not initialzed for Client
*** ClientHello, TLSv1
RandomCookie:  GMT: 1538275877 bytes = { 241, 176, 51, 175, 86, 198, 212, 80, 127, 148, 227, 71, 225, 187, 76, 30, 151, 32, 213, 28, 179, 237, 196, 200, 111, 252, 126, 198 }
Session ID:  {}
Cipher Suites: [SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_AES_256_CBC_SHA, SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA, SSL_ECDH_RSA_WITH_AES_256_CBC_SHA, SSL_DHE_RSA_WITH_AES_256_CBC_SHA, SSL_DHE_DSS_WITH_AES_256_CBC_SHA, SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_AES_128_CBC_SHA, SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDH_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_DSS_WITH_AES_128_CBC_SHA]
Compression Methods:  { 0 }
Extension renegotiation_info, ri_length: 0, ri_connection_data: { null }
Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
Extension extended_master_secret
Extension server_name, server_name: [type=host_name (0), value=<>]
***
[write] MD5 and SHA1 hashes:  len = 140
0000: 01 00 00 88 03 01 5c b0  3a 25 f1 b0 33 af 56 c6  ............3.V.
0010: d4 50 7f 94 e3 47 e1 bb  4c 1e 97 20 d5 1c b3 ed  .P...G..L.......
0020: c4 c8 6f fc 7e c6 00 00  1c c0 0a c0 14 00 35 c0  ..o...........5.
0030: 05 c0 0f 00 39 00 38 c0  09 c0 13 00 2f c0 04 c0  ....9.8.........
0040: 0e 00 33 00 32 01 00 00  43 ff 01 00 01 00 00 0a  ..3.2...C.......
0050: 00 0a 00 08 00 17 00 18  00 19 00 16 00 0b 00 02  ................
0060: 01 00 00 17 00 00 00 00  00 22 00 20 00 00 1d 73  ...............
0070: 64 70 2d 63 77 73 2e 73  64 70 31 32 2d 69 73 74  
0080: 67 2e 63 73 63 6f 2e 63  6c 6f 75 64              

main, WRITE: TLSv1 Handshake, length = 140
[Raw write]: length = 145
0000: 16 03 01 00 8c 01 00 00  88 03 01 5c b0 3a 25 f1  ................
0010: b0 33 af 56 c6 d4 50 7f  94 e3 47 e1 bb 4c 1e 97  .3.V..P...G..L..
0020: 20 d5 1c b3 ed c4 c8 6f  fc 7e c6 00 00 1c c0 0a  .......o........
0030: c0 14 00 35 c0 05 c0 0f  00 39 00 38 c0 09 c0 13  ...5.....9.8....
0040: 00 2f c0 04 c0 0e 00 33  00 32 01 00 00 43 ff 01  .......3.2...C..
0050: 00 01 00 00 0a 00 0a 00  08 00 17 00 18 00 19 00  ................
0060: 16 00 0b 00 02 01 00 00  17 00 00 00 00 00 22 00  ................
0070: 20 00 00 1d 73 64 70 2d  63 77 73 2e 73 64 70 31  ....
0080: 32 2d 69 73 74 67 2e 63  73 63 6f 2e 63 6c 6f 75  
0090: 64                                                 

[Raw read]: length = 5
0000: 15 03 01 00 02                                     .....

[Raw read]: length = 2
0000: 02 46                                              .F

main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, protocol_version
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLException: Received fatal alert: protocol_version
忽略不支持的密码套件:SSL\u ECDH\u ECDSA\u WITH\u AES\u 128\u GCM\u SHA256
忽略不支持的密码套件:SSL\u ECDH\u RSA\u WITH\u AES\u 128\u GCM\u SHA256
忽略不支持的密码套件:SSL\u DHE\u RSA\u WITH\u AES\u 128\u GCM\u SHA256
忽略不受支持的密码套件:SSL\u DHE\u DSS\u和\u AES\u 128\u GCM\u SHA256
%%没有缓存的客户端会话
未为客户端初始化ALPNJSEXT
***ClientHello,TLSv1
RandomCookie:GMT:1538275877字节={241176 51175 86198212 80127 148227 71225 18776 30151 32213 28179237196200111252126198}
会话ID:{}
密码套件:我们的SSL(SSL)是一个加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密加密_AES_128_CBC_SHA,SSL_ECDHE_RSA_与_AES_128_CBC_SHA,SSL_RSA_与_AES_128_CBC_SHA,SSL\u ECDH\u ECDSA\u带AES\u 128\u CBC\u SHA、SSL\u ECDH\u RSA\u带AES\u 128\u CBC\u SHA、SSL\u DHE\u RSA\u带AES\u 128\u CBC\u SHA、SSL\u DHE\u DSS\u带AES\u 128\u CBC\u SHA]
压缩方法:{0}
扩展重新协商\u信息,ri\u长度:0,ri\u连接\u数据:{null}
扩展椭圆曲线,曲线名称:{secp256r1,secp384r1,secp521r1,secp256k1}
扩展ec_点_格式,格式:[未压缩]
扩展\u主\u密钥
扩展服务器名称,服务器名称:[类型=主机名称(0),值=]
***
[写入]MD5和SHA1哈希:len=140
0000:01 00 00 88 03 01 5c b0 3a 25 f1 b0 33 af 56 c6………3.V。
0010:d4 50 7f 94 e3 47 e1 bb 4c 1e 97 20 d5 1c b3教育部。。。。。。。
0020:c4 c8 6f fc 7e c6 00 00 1c c0 0a c0 14 00 35 c0..o..5。
0030:05 c0 0f 00 39 00 38 c0 09 c0 13 00 2f c0 04 c0…9.8。。。。。。。。。
0040:0e 00 33 00 32 01 00 00 43 ff 01 00 01 00 0a..3.2…C。。。。。。。
0050:00 0a 00 08 00 17 00 18 00 19 00 16 00 0b 00 02。。。。。。。。。。。。。。。。
0060:01 00 17 00 00 00 00 22 00 20 00 00 1d 73。。。。。。。。。。。。。。。
0070:64 70 2d 63 77 73 2e 73 64 70 31 32 2d 69 73 74
0080:67 2e 63 73 63 6f 2e 63 6c 6f 75 64
main,WRITE:TLSv1握手,长度=140
[原始写入]:长度=145
0000:16 03 01 00 8c 01 00 88 03 01 5c b0 3a 25 f1。。。。。。。。。。。。。。。。
0010:b0 33 af 56 c6 d4 50 7f 94 e3 47 e1 bb 4c 1e 97.3.V..P..G..L。。
0020:20 d5 1c b3 ed c4 c8 6f fc 7e c6 00 1c c0 0a……o。。。。。。。。
0030:c0 14 00 35 c0 05 c0 0f 00 39 00 38 c0 09 c0 13…5…9.8。。。。
0040:00 2f c0 04 c0 0e 00 33 00 32 01 00 43 ff 01……3.2……C。。
0050:00 01 00 00 00 00 00 00 00 08 00 17 00 18 00 19 00。。。。。。。。。。。。。。。。
0060:16 00 0b 00 02 01 00 17 00 00 22 00。。。。。。。。。。。。。。。。
0070:20 00 00 1d 73 64 70 2d 63 77 73 2e 73 64 70 31。。。。
0080:32 2d 69 73 74 67 2e 63 73 63 6f 2e 63 6c 6f 75
0090: 64                                                 
[原始读取]:长度=5
0000: 15 03 01 00 02                                     .....
[原始读取]:长度=2
0000:02 46.F
主,读取:TLSv1警报,长度=2
主,RECV TLSv1.2警报:致命,协议版本
main,称为closeSocket()
主,处理异常:javax.net.ssl.SSLException:收到致命警报:协议\版本
clientHello应该列出TLSv1.2,但为什么它会显示TLSv1呢?
由于客户端支持TLSv1.2,而且我使用的是java1.8,因此我遇到了与使用SSL连接与第三方提供商交换数据的API相同的问题。简单地说,我禁用了较低级别的安全算法。此设置强制服务器只接受TLSv1.2连接

jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1
在jre/lib/security/java.security文件中添加此参数可以解决您的问题。

A将非常有用。。。