Мы запускаем сценарий JMeter, который отправляет данные json на внутреннюю конечную точку https. Но мы периодически получаем исключение javax.net.ssl.SSLHandshakeException (примерно 3 раза из 100 вызовов) во время выполнения сценария.
Эта проблема очень похожа на следующий вопрос SO, но все обсуждаемые там решения для меня не работают: javax.net.ssl.SSLHandshakeException: handshake_failure при использовании JMeter с SSL (JDK8)
Я использую JDK8 и последнюю версию JMeter 4.0. Я включил отладку ssl и из сообщений ClientHello и ServerHello, похоже, что сервер поддерживает TLS 1.2 и набор шифров TLS_RSA_WITH_AES_128_CBC_SHA, который также поддерживается JMeter.
Но в журналах SSL для неудачных запросов JMeter я вижу следующее:
WRITE: TLSv1.2 Handshake, length = 64
READ: TLSv1.2 Alert, length = 2
RECV TLSv1.2 ALERT: fatal, handshake_failure
%% Недействительно: [Session-17, TLS_RSA_WITH_AES_128_CBC_SHA]
Я пробовал следующие решения:
1. Добавлен серверный сертификат в jre cacerts
2. Загрузил локальные jar-файлы политик для неподдерживаемых шифров и скопировал их в папку безопасности jre lib
3. Обновите httpclient jar (4.5) для JMeter
4. Явно включенный TLS 1.2 в конфигурации JMeter
Я использовал TestSSLServer для проверки возможности SSL нашего сервера, и вот что он возвращает:
SSLv3:
выбор сервера: принудительное выполнение настроек сервера
3- (ключ: RSA) RSA_WITH_RC4_128_SHA
3- ( ключ: RSA) RSA_WITH_AES_128_CBC_SHA
3- (ключ: RSA) RSA_WITH_AES_256_CBC_SHA
3- (ключ: RSA) RSA_WITH_3DES_EDE_CBC_SHA
TLSv1.0: idem
TLSv1.2: выбор сервера: принудительно применять настройки сервера
3- (ключ: RSA) RSA_WITH_RC4_128_SHA
3- (ключ: RSA) RSA_WITH_AES_128_CBC_SHA
3- (ключ: RSA) RSA_WITH_AES_256_CBC_SHA
3- (ключ: RSA) RSA_WITH_3DES_EDE_CBC_SHA
3- (ключ: RSA) RSA_WITH_AES_128_CBC_SHA256
3- (ключ: RSA) RSA_WITH_AES_256_CBC_SHA256
Есть идеи относительно того, что может пойти не так?
javax.net.debug=ssl
и сохраните вывод, который будет огромным (возможно, вам придется купить еще несколько дисков), и потратите дни или недели на его изучение. Ваши 1 и 4 никогда не могут вызвать это предупреждение, а ваш 2 не может, если сервер принимает AES128. (Принятие заметки - это не то же самое, что требование; ваше «ожидание» неоднозначно.) - person dave_thompson_085   schedule 08.07.2018