我实际上是在尝试执行以下操作:
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 警告警报。
有谁知道该由谁解决或绕过它?
最佳答案
意识到这个问题相当陈旧,并且已经接受了一个答案,这里有一个替代答案对我来说非常有效,可能对通过搜索来到这里的人们有用:
- 将
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 警告而不是浏览器警告时,此解决方案才会对您有帮助。也就是说,我假设证书链实际上已正确设置。
关于c - libcurl gnutls_handshake() 失败 : A TLS warning alert has been received,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5794337/