Я пытаюсь сделать запрос POST через curl к серверу, который поддерживает только TLS 1.2, TLS 1.1 и TLS 1.0. Однако даже когда я пытаюсь указать необходимость в TLS вместо SSL по умолчанию версии 3 (добавление --- tlsv1), я получаю следующий ответ:

curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Это версия curl, которую я использую:

curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

Нет проблем брандмауэра с разрешением URL.

Как я могу сделать POST успешным?

Обновление: я попытался также сделать запрос с Python, чтобы попытаться выяснить, в чем проблема. URL-адрес является внутренним, поэтому я не могу поделиться этим, но мы будем благодарны за помощь в решении проблемы конфигурации. Вот ошибка Python:

urllib2.URLError: <urlopen error (1, 'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure')>

2 ответа2

2

Как я могу сделать POST успешным?

Трудно сказать, в чем проблема, не зная точного URL. Но учитывая версию curl, которую вы используете, возможно, сервер требует индикации имени сервера (SNI), которая не поддерживается старой версией curl, которую вы используете.

0

Ошибка "рукопожатия" указывает, что клиент и сервер не смогли договориться о том, как настроить безопасный канал, требуемый для HTTPS. Версия OpenSSL, которую вы используете, очень старая и понимает только SSL до sslv3, который требуется серверу как минимум. Следовательно, ошибка "sslv3" - она сообщает вам, что пыталась говорить по SSL v3 (что меньше, чем TLS v1) и не смогла получить значимый ответ.

Вам не повезло без обновления до более поздней версии OpenSSL, и даже в этом случае, возможно, потребуется повысить версию curl, чтобы справиться и с более новой версией TLS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .