web-dev-qa-db-fra.com

javax.net.ssl.SSLException: Alerte irrécupérable reçue: version_protocole

Quelqu'un at-il rencontré cette erreur auparavant? Je suis nouveau sur SSL, y at-il un problème évident avec mon ClientHello qui me manque? Cette exception est levée sans réponse ServerHello. Tout conseil est apprécié.

*** ClientHello, TLSv1
RandomCookie:  GMT: 1351745496 bytes = { 154, 151, 225, 128, 127, 137, 198, 245, 160, 35, 124, 13, 135, 120, 33, 240, 82, 223, 56, 25, 207, 231, 231, 124, 103, 205, 66, 218 }
Session ID:  {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods:  { 0 }
***
[write] MD5 and SHA1 hashes:  len = 75
0000: 01 00 00 47 03 01 51 92   00 D8 9A 97 E1 80 7F 89  ...G..Q.........
0010: C6 F5 A0 23 7C 0D 87 78   21 F0 52 DF 38 19 CF E7  ...#...x!.R.8...
0020: E7 7C 67 CD 42 DA 00 00   20 00 04 00 05 00 2F 00  ..g.B... ...../.
0030: 33 00 32 00 0A 00 16 00   13 00 09 00 15 00 12 00  3.2.............
0040: 03 00 08 00 14 00 11 00   FF 01 00                 ...........
xxx, WRITE: TLSv1 Handshake, length = 75
[write] MD5 and SHA1 hashes:  len = 101
0000: 01 03 01 00 3C 00 00 00   20 00 00 04 01 00 80 00  ....<... .......
0010: 00 05 00 00 2F 00 00 33   00 00 32 00 00 0A 07 00  ..../..3..2.....
0020: C0 00 00 16 00 00 13 00   00 09 06 00 40 00 00 15  ............@...
0030: 00 00 12 00 00 03 02 00   80 00 00 08 00 00 14 00  ................
0040: 00 11 00 00 FF 51 92 00   D8 9A 97 E1 80 7F 89 C6  .....Q..........
0050: F5 A0 23 7C 0D 87 78 21   F0 52 DF 38 19 CF E7 E7  ..#...x!.R.8....
0060: 7C 67 CD 42 DA                                     .g.B.
xxx, WRITE: SSLv2 client hello message, length = 101
[Raw write]: length = 103
0000: 80 65 01 03 01 00 3C 00   00 00 20 00 00 04 01 00  .e....<... .....
0010: 80 00 00 05 00 00 2F 00   00 33 00 00 32 00 00 0A  ....../..3..2...
0020: 07 00 C0 00 00 16 00 00   13 00 00 09 06 00 40 00  ..............@.
0030: 00 15 00 00 12 00 00 03   02 00 80 00 00 08 00 00  ................
0040: 14 00 00 11 00 00 FF 51   92 00 D8 9A 97 E1 80 7F  .......Q........
0050: 89 C6 F5 A0 23 7C 0D 87   78 21 F0 52 DF 38 19 CF  ....#...x!.R.8..
0060: E7 E7 7C 67 CD 42 DA                               ...g.B.
[Raw read]: length = 5
0000: 15 03 01 00 02                                     .....
[Raw read]: length = 2
0000: 02 46                                              .F

{ http://xml.Apache.org/axis/ } stackTrace:

javax.net.ssl.SSLException: Received fatal alert: protocol_version
at com.Sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.Java:190)
at com.Sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.Java:136)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.Java:1806)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:986)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1170)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1197)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1181)
at org.Apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.Java:186)
at 

...

18
Matthias

Sur Java 1.8, le protocole TLS par défaut est v1.2. Sur Java 1.6 et 1.7, TLS1.0 est obsolète. Je reçois cette erreur sur Java 1.8, car les URL utilisent l’ancien TLS1.0 (comme Your - You see ClientHello, TLSv1). Pour résoudre cette erreur, vous devez utiliser les valeurs de remplacement par défaut pour Java 1.8.

System.setProperty("https.protocols", "TLSv1");

Plus d'infos sur le Blog Oracle .

27
marioosh

la réponse de marioosh semble être sur la bonne voie. Cela n'a pas fonctionné pour moi ... J'ai donc trouvé:

Problèmes de connexion via HTTPS/SSL via votre propre client Java

qui utilise:

Java.lang.System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");

Ce qui semble être nécessaire avec Java 7 et un site TLSv1.2. 

J'ai vérifié le site avec:

openssl s_client -connect www.st.nmfs.noaa.gov:443

en utilisant

openssl version
OpenSSL 1.0.2l  25 May 2017

et obtenu le résultat:

...
SSL-Session:
   Protocol  : TLSv1.2
   Cipher    : ECDHE-RSA-AES256-GCM-SHA384
...

Veuillez noter que la version plus ancienne d'OpenSL sur mon Mac ne fonctionnait pas et que je devais utiliser celle de Macports.

7
Wolfgang Fahl

J'ai rencontré ce problème en essayant d'installer un paquet PySpark. J'ai contourné le problème en changeant la version de TLS avec une variable d'environnement:

echo 'export Java_TOOL_OPTIONS="-Dhttps.protocols=TLSv1.2"' >> ~/.bashrc
source ~/.bashrc
4
devinbost

Cela ressemble à une incompatibilité de version de protocole, cette exception se produit normalement en cas d'incompatibilité entre la version de protocole SSL utilisée par le client et le serveur. vos clients doivent utiliser une version de protocole supportée par le serveur.

4
CloudyMarble

Je recevais la même erreur . Pour Java version 7, suivre fonctionne pour moi.

Java.lang.System.setProperty ("https.protocols", "TLSv1.2");

2
Urja Ramanandi

Cela est dû au fait que vous envoyez une liaison TLSv1, mais ensuite vous envoyez un message en utilisant le protocole SSLv2;

xxx, WRITE: TLSv1 Handshake, length = 75
xxx, WRITE: SSLv2 client hello message, length = 101

Cela signifie que le serveur attend l'utilisation du protocole TLSv1 et n'acceptera pas la connexion. Essayez de spécifier le protocole à utiliser ou envoyez du code pertinent pour que nous puissions avoir un aperçu.

1
John Snow

Vous pouvez essayer en ajoutant la ligne suivante à catalina.bat après la dernière entrée de Java_OPTS

set Java_OPTS =% Java_OPTS% -Dhttps.protocols = TLSv1.2 -Djdk.tls.client.protocols = TLSv1.2

0
mk-baku