libcurl gnutls_handshake () не удалось: получено предупреждение TLS - PullRequest
4 голосов
/ 26 апреля 2011

Я, по сути, пытаюсь сделать следующее:

http://curl.haxx.se/libcurl/c/https.html

У меня есть сервер apache с mod_ssl и сертификатом сервера. Я добавил строку:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);

а также пробовал:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);

но я продолжаю получать сообщение об ошибке: gnutls_handshake () не удалось: получено предупреждение TLS.

Кто-нибудь знает, кому это исправить или обойти?

Ответы [ 3 ]

4 голосов
/ 26 мая 2015

Понимая, что вопрос довольно старый и один ответ уже был принят, вот альтернативный ответ, который отлично сработал для меня и может быть полезен для людей, приходящих сюда из поиска:

  • Заменить libcurl-gnutls альтернативой libcurl-openssl.

Я заметил, что ошибка сертификата генерировалась только с программами, использующими libcurl, а не с браузерами, поэтому я предположил, что здесь что-то не так с GNUTLS, а не с сертификатами.

Вот что у меня сработало (Ubuntu 12.04 LTS):

$ sudo apt-get remove libcurl4-gnutls-dev
$ sudo apt-get install libcurl4-openssl-dev 

Все программы, которые полагались на libcurl, начали нормально работать сразу после того, как я заменил библиотеки (я также на всякий случай перекомпилировал программы).

Примечание: это решение поможет вам, только если вы получите предупреждение с GNUTLS, но не с, скажем, браузерами. То есть я предполагаю, что цепочка сертификатов настроена правильно.

3 голосов
/ 08 ноября 2012

Я попытался описать вышеупомянутое решение, и это не сработало для меня.В python я попробовал следующую опцию, которая эффективно запускает SSLv3 и отключает TLS.

c.setopt(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3)

в PHP, это можно сделать, установив для параметра CURLOPT_SSLVERSION значение 3.

2 голосов
/ 26 апреля 2011

Это «обычное» предупреждение, которое вы получаете, означает, что нет ни одной известной организации (центра сертификации), готовой поручиться за ее подлинность. Это то, что означает «обычное» предупреждение, и это то, что говорит вам предупреждение TLS.

Попробуйте установить CURLOPT_SSL_VERIFYHOST в 0 или установить соответствующий сертификат.

...