Ошибка error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure на jmeter.

Вопрос или проблема

У меня проблема с Jmeter Curl. У меня есть файл .sh, который содержит команду curl, и этот файл sh вызывается с использованием OS Process Sampler.

enter image description here

Команда .sh содержит

curl -kvH "Accept: application/json" https://www.rocketleaguereplays.com/api/replays/-1/

Но я получаю ошибку

* Adding handle: conn: 0x75e6e0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x75e6e0) send_pipe: 1, recv_pipe: 0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* About to connect() to www.rocketleaguereplays.com port 443 (#0)
*   Trying 104.24.115.83...
* Connected to www.rocketleaguereplays.com (104.24.115.83) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
} [data not shown]

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* SSLv3, TLS alert, Server hello (2):
{ [data not shown]
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Closing connection 0
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

С какой ОС вы подключаетесь?

Скорее всего, у вас устаревшие библиотеки libssl, поэтому вы не можете подключиться к узлу, который поддерживает только недавние версии TLS.

Ответ или решение

Теория

Ошибка error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure указывает на проблему при установке SSL/TLS соединения между клиентом и сервером. Эта ошибка происходит во время фазы "рукопожатия" (handshake), когда сервер отправляет предупреждение клиенту, что он не может установить соединение с этим SSL-протоколом. Эта проблема обычно вызвана одной из нескольких причин: устаревший протокол SSL (SSLv3) или TLS версии, неподдерживаемый современным сервером, либо несовместимость шифров (ciphers) между клиентом и сервером.

Современные веб-серверы часто отключают поддержку устаревших протоколов, таких как SSLv3 и даже некоторых старых версий TLS (например, TLS 1.0 и 1.1), по причинам безопасности. Безопасные соединения играют критическую роль в защите данных пользователей и предотвращении атак типа MitM (срединного человека), которые могут перехватить или изменить передаваемые данные.

Пример

В вашем случае вы используете JMeter, который через OS Process Sampler вызывает curl команду из скрипта .sh. Вы пытаетесь установить соединение с https://www.rocketleaguereplays.com/api/replays/-1/, но получаете обратное сообщение об ошибке от сервера про несоответствие протокола, указывающее на проблему с настройками SSL/TLS.

Ошибка, которую вы видите, возникает, когда клиентская программа пытается использовать старый протокол (в данном случае SSLv3), который сервер уже не поддерживает. Сервер посылает ответ "рукопожатие не удалось" – это сообщение, которое вы наблюдаете. В результате соединение закрывается и ваше приложение выводит сообщение об ошибке.

Применение

Чтобы исправить эту ситуацию, вы должны убедиться, что используете совместимый с сервером протокол. Следуйте этим рекомендациям для решения проблемы:

  1. Обновление библиотек SSL: Убедитесь, что в вашей системе установлены последние версии библиотек OpenSSL или аналогичных, обеспечивающих актуальную поддержку современных версий TLS. Вы можете использовать команду:

    sudo apt-get update && sudo apt-get upgrade -y
  2. Обновление curl: Убедитесь, что вы используете последнюю версию curl, так как старые версии могут не поддерживать современные TLS. Проверьте и обновите curl:

    sudo apt-get install --only-upgrade curl
  3. Изменение команды curl: Убедитесь, что curl использует нужные версии TLS. Это можно сделать, добавив флаг --tlsv1.2 (или --tlsv1.3, если он поддерживается):

    curl -kv --tlsv1.2 -H "Accept: application/json" https://www.rocketleaguereplays.com/api/replays/-1/
  4. Проверка шифров: Если ошибка сохраняется, удостоверьтесь, что используемые шифры соответствуют тем, которые поддерживает сервер. Это можно сделать, указав флаг --ciphers с нужными шифровыми наборами.

  5. Логи сервера: Если у вас есть доступ к логам сервера, проверьте их на предмет более точных деталей о том, почему соединение отклоняется. Это может дать больше указаний о том, какие версии TLS или шифры требуются.

  6. Конфигурация JMeter: Убедитесь, что JMeter и его компоненты используют совместимые версии библиотек JSSE или аналогичных для установления SSL-соединений. Для этого проверьте ваши настройки конфигурации и, если необходимо, переключитесь на использование более новых комплектаций, которые поддерживают нужные версии TLS.

Следуя этим инструкциям, вы устраняете несовместимость между клиентом и сервером, обеспечив успешное установление безопасного соединения. Безопасность соединений играет большую роль в защите данных, и важно поддерживать программное обеспечение в актуальном состоянии, соответствуя современным стандартам безопасности.

Оцените материал
Добавить комментарий

Капча загружается...