#c #ssl #libcurl
#c #ssl #libcurl
Вопрос:
По сути, я пытаюсь сделать следующее:
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.
Кто-нибудь знает, кто может это исправить или обойти?
Комментарии:
1. Выдает ли браузер предупреждение, когда вы указываете его на этот адрес?
2. Да, обычное предупреждение, которое вы получаете.
Ответ №1:
Понимая, что вопрос довольно старый и один ответ уже был принят, вот альтернативный ответ, который отлично сработал для меня и может быть полезен для людей, пришедших сюда из поиска:
- Заменить
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, но не, скажем, с браузерами. То есть я предполагаю, что цепочка сертификатов действительно настроена правильно.
Ответ №2:
Я попытался использовать вышеупомянутое решение, но у меня это не сработало. В python я попробовал следующую опцию, которая эффективно запускает SSLv3 и отключает TLS.
c.setopt(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3)
в PHP это должно быть возможно выполнить, установив для CURLOPT_SSLVERSION
параметра значение 3.
Ответ №3:
Это «обычное» предупреждение, которое вы получаете, означает, что нет известной организации (центра сертификации), готовой поручиться за его подлинность. Именно это означает «обычное» предупреждение, и именно об этом сообщает вам предупреждение TLS.
Попробуйте установить CURLOPT_SSL_VERIFYHOST
значение 0 или установить соответствующий сертификат.
Комментарии:
1. Установка curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); Давайте я пока обойду проверку.