web-dev-qa-db-fra.com

javax.net.ssl.SSLHandshakeException: handshake_failure lors de l'utilisation de JMeter avec SSL (JDK8)

J'écris un plan de test JMeter pour me connecter au port SSL (connecteur Tomcat). Je reçois une exception SSLHandshakeException (handshake_failure) lors de la connexion au port SSL à l'aide de l'une des trois implémentations de client SSL JMeter (HttpClient4, HttpClient3.1, Java) sur JDK8 (1.8.0_51). Si j'utilise JDK7 (1.7.0_75) - tout fonctionne comme prévu.

Client JDK: HotSpot 1.8.0_51
Client OS: Mac OSX 10.10.2
JMeter version: 2.13

Server: Tomcat 7.0.63 (latest)
Server SSL CipherSuite: RC4-SHA
Server SSL Protocol: all
Server Java: OpenJDK 1.7.0_79

Voici quelques choses que j'ai déjà essayées:

(1) J'ai essayé de remplacer les fichiers JAR JCE Unlimited Strength, comme suggéré sur une question similaire: SSLHandshakeException lors de la connexion à un site https

Aucun changement dans les messages d'erreur ou le fichier journal, le client JDK8 ne se connecterait pas au serveur SSL.

(2) J'ai activé le débogage comme décrit ici: https://blogs.Oracle.com/Java-platform-group/entry/diagnosing_tls_ssl_and_https . Démarrer JMeter avec JVM_ARGS défini sur -Djavax.net.debug=ssl:handshake:verbose. Le fichier journal (joint ci-dessous) ne donne aucune raison pour expliquer le problème.

(3) J'ai essayé de spécifier le procotol HTTPS, par exemple. -Dhttps.protocols=SSLv3. Pas de chance. SSLv3 était désactivé ou le chiffrement ne correspondait pas: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

(4) J'ai essayé de désactiverSNI, par exemple. -Djsse.enableSNIExtension=false. Pas de chance non plus.

Donc, je suis obligé d’utiliser le JDK7 pour l’instant, jusqu’à ce que je puisse faire fonctionner mon JMeter avec JDK8 , et j’aimerais remédier à cela.

Le problème réside donc dans la façon dont JDK8 gère les clients SSL différemment de JDK7. De plus, le serveur (Tomcat Connector) devrait prendre en charge les chiffrements et les protocoles appropriés, mais cela n’est pas sous mon contrôle pour le moment.

Voici les journaux pertinents:

X509KeyManager passed to SSLContext.init():  need an X509ExtendedKeyManager for SSLEngine use
trigger seeding of SecureRandom
done seeding SecureRandom
Agents (clients) 1-2, setSoTimeout(0) called
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1.1
%% No cached client session
%% No cached client session
*** ClientHello, TLSv1.2
RandomCookie:  *** ClientHello, TLSv1.2
GMT: 1422637724 bytes = { RandomCookie:  GMT: 1422637724 bytes = { 71, 27, 101, 246, 26, 99, 64, 213, 53, 66, 156, 66, 118, 137, 247113, , 226, 86, 121, 189, 207, 175, 98, 46, 64, 242, 48, 19, 30, 66, 251, 120, 125, 249, 63, 114, 254, 246, 5, 168, 17, 190, 214, 228, 90, 165128 }
Session ID:  , 113, {}
157, 211, 230, 144, Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
145, 63, Compression Methods:  { 238, 0178 }
Session ID:  {}
 }
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods:  { 0 }
Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA224withECDSA, SHA224withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA, MD5withRSA
***
Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1}
Extension ec_point_formats, formats: [uncompressed]
Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA224withECDSA, SHA224withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA, MD5withRSA
***
Agents (clients) 1-2, WRITE: TLSv1.2 Handshake, length = 237
Agents (clients) 1-1, WRITE: TLSv1.2 Handshake, length = 237
Agents (clients) 1-2, READ: TLSv1.2 Alert, length = 2
Agents (clients) 1-2, RECV TLSv1.2 ALERT:  fatal, handshake_failure
Agents (clients) 1-2, called closeSocket()
Agents (clients) 1-2, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Agents (clients) 1-2, called close()
Agents (clients) 1-2, called closeInternal(true)
Agents (clients) 1-1, READ: TLSv1.2 Alert, length = 2
Agents (clients) 1-1, RECV TLSv1.2 ALERT:  fatal, handshake_failure
Agents (clients) 1-1, called closeSocket()
Agents (clients) 1-1, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Agents (clients) 1-1, called close()
Agents (clients) 1-1, called closeInternal(true)

Voici le stacktrace que je reçois dans le fichier journal JMeter:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at Sun.security.ssl.Alerts.getSSLException(Alerts.Java:192)
    at Sun.security.ssl.Alerts.getSSLException(Alerts.Java:154)
    at Sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.Java:2023)
    at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:1125)
    at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1375)
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1403)
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1387)
    at Sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.Java:563)
    at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Java:185)
    at Sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.Java:153)
    at org.Apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.Java:483)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.Java:74)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.Java:1146)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.Java:1135)
    at org.Apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.Java:434)
    at org.Apache.jmeter.threads.JMeterThread.run(JMeterThread.Java:261)
    at Java.lang.Thread.run(Thread.Java:745)

Alors, comment puis-je faire en sorte que le client JDK8 dans JMeter parle au port SSL à l’aide des protocoles et des codes autorisés par le serveur.

Merci!

Edit: Ajout des résultats du test SSL Labs

Protocols
    TLS 1.2    Yes
    TLS 1.1    Yes
    TLS 1.0    Yes
    SSL 3      No
    SSL 2      No

Cipher Suites (sorted by strength as the server has no preference; deprecated and SSL 2 suites at the end)
    TLS_RSA_WITH_RC4_128_SHA (0x5)      WEAK        128

Clients
    Java 6u45    No SNI 2    TLS 1.0    TLS_RSA_WITH_RC4_128_SHA (0x5) No FS    RC4    128
    Java 7u25                TLS 1.0    TLS_RSA_WITH_RC4_128_SHA (0x5) No FS    RC4    128
    Java 8u31                TLS 1.2    TLS_RSA_WITH_RC4_128_SHA (0x5) No FS    RC4    128
5
nevenc

Donc, après quelques recherches et des idées dans les commentaires, cela se résume à la configuration de Tomcat. Configuration Tomcat autorisée uniquement RC4-SHA, ce qui n'est pas sécurisé et n'est plus supporté par Java 8, selon RFC7465 (merci Robert pour la référence).

JMeter a fonctionné sur Java8, en mettant à jour la configuration SSL du serveur, en supprimant le chiffrement RC4-SHA-only et en autorisant toutes les suites de chiffrement par défaut, par exemple. en supprimant SSLCipherSuite="RC4-SHA" du server.xml fichier de configuration Tomcat.

L'ajout d'un cryptage de sécurité renforcé ( JCE Unlimited Strength Policy ) permettra d'améliorer les suites de chiffrement et le cryptage. Vous devrez cependant connaître les règles d'exportation des États-Unis.

Je devrai prendre une décision quant aux chiffrements que nous voulons soutenir. Cela dépend des clients que nous nous attendons à connecter à notre connecteur SSL Tomcat. Un client est certainement notre client de test JMeter, et rares sont les autres clients RESTful qui se connecteront, écrits dans différentes langues et pour différentes plates-formes.

Espérons que cette discussion aide les autres et apporte un peu de lumière.

J'aimerais modifier cette réponse pour ajouter le protocole TLS et les paramètres CipherSuite recommandés (pour le moment).

J'ai trouvé de bonnes discussions sur Configuration SSL de Mozilla ServerSide :

Compatibilité moderne

Ciphersuite: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
Versions: TLSv1.1, TLSv1.2
RSA key size: 2048
DH Parameter size: 2048
Elliptic curves: secp256r1, secp384r1, secp521r1 (at a minimum)
Certificate signature: SHA-256
HSTS: max-age=15724800

Compatibilité intermédiaire

Ciphersuite: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Versions: TLSv1, TLSv1.1, TLSv1.2
RSA key size: 2048
DH Parameter size: 2048 (see DHE and Java for details)
Elliptic curves: secp256r1, secp384r1, secp521r1 (at a minimum)
Certificate signature: SHA-256

... et d'autres

Merci à tous ceux qui sont intervenus.

7
nevenc

Voici comment j'ai résolu ce problème sur un mac, comme indiqué dans ici sur StackOverflow :

  1. Téléchargez les fichiers de sécurité mis à jour depuis Oracle - ceux-ci sont destinés à Java 8: http://www.Oracle.com/technetwork/Java/javase/downloads/jce8-download-2133166.html

  2. Décompressez le fichier Zip téléchargé.

  3. Accédez au dossier de sécurité de votre répertoire de base Java:

    cd $(/usr/libexec/Java_home)/jre/lib/security
    
  4. Sauvegardez les fichiers JAR suivants à partir de ce dossier:

    • US_export_policy.jar

    • politique_local.jar

  5. Remplacez par les pots du fichier Zip.

  6. Redémarrez Jmeter.

4
Brad Parks

Je recevais même exception dans JDK7_u80. javax.net.ssl.SSLHandshakeException: handshake_failure. Même après avoir remplacé des bocaux dans des dossiers de sécurité par des fichiers JCE. 

J'ai installé la nouvelle version JDK8_u92 et défini le chemin de l'environnement sur Java8 récemment installé. Et le problème de jmeter est résolu maintenant. 

2
somspeaks

Il existe une solution qui permet à JMeter de se connecter à des terminaux non sécurisés (ou à ceux utilisant des protocoles anciens ou insuffisamment sécurisés):

  • Trouvez votre JRE;
  • Ouvrir le dossier jre\lib\security\;
  • Faites une copie de sauvegarde du fichier Java.security;
  • Editez le fichier Java.security et commentez toutes les lignes qui désactivent les algorithmes non sécurisés - recherchez la chaîne 'disabledAlgorithms' (n'oubliez pas de commenter les deux lignes dans les paramètres multilignes), elles ont l'aspect suivant:

jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ DSA keySize < 1024, EC keySize < 224

  • sauvegardez le fichier et redémarrez JMeter.

Les connexions Java sont maintenant autorisées à utiliser les anciens protocoles, ainsi JMeter peut fonctionner correctement.

N'oubliez pas que c'est la sécurité!

Ces paramètres sont globaux et affecteront tous les programmes qui utilisent le même JRE. Si vous avez trouvé ce correctif fonctionnel et utile pour votre système,DOcréez une copie de votre JRE et définissez son chemin d'accès dans jmeter.bat. Renvoyez vos paramètres globaux à partir de la copie sauvegardée du fichier Java.security.

0
L'sync

J'étais confronté au même problème et je l'ai résolu en fonction des informations fournies dans l'article ci-dessus. Mes deux cents dans la résolution du problème:

  1. Essayez de frapper l'URL de chrome et cliquez sur le bouton de verrouillage et voir le certificat.
  2. Recherchez le protocole https pris en charge (par exemple, TLS v1.2).
  3. Vérifiez à partir de si votre version de Java prend en charge. Sinon, mettez à jour Java.
  4. Dans le fichier des propriétés correctes de jmeter, mettez à jour la propriété 

    https.default.protocol=TLSv1.2

  5. Redémarrez jmeter.

La procédure ci-dessus a fonctionné pour moi.

0
learning J

J'avais un problème similaire avec Jmeter 3.2 et JRE 8 et d'ajouter ci-dessous des propriétés dans Jmeter JNDI Properties, cela fonctionne très bien pour moi:

Java.naming.security.principal  
Java.naming.security.credentials    
com.tibco.tibjms.naming.security_protocol   
com.tibco.tibjms.naming.ssl_enable_verify_Host  
com.tibco.tibjms.naming.ssl_trusted_certs   
com.tibco.tibjms.naming.ssl_password    
com.tibco.tibjms.naming.ssl_auth_only   
com.tibco.tibjms.naming.ssl_trace   
com.tibco.tibjms.naming.ssl_debug_trace 
com.tibco.tibjms.naming.ssl_identity
0
Sujit Kumar