c - libcurl gnutls_handshake() 失败 : A TLS warning alert has been received

标签 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 警告警报。

有谁知道该由谁解决或绕过它?

最佳答案

意识到这个问题相当陈旧,并且已经接受了一个答案,这里有一个替代答案对我来说非常有效,可能对通过搜索来到这里的人们有用:

  • 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/

相关文章:

python - 在 Windows : CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda. anaconda.org/anaconda/win-64 上安装 python 库的问题

C libcurl - 测量下载速度和剩余时间

c - 缓存的 SSL session 是否包含以前的 X.509 证书信息?

c - 在 ADT 中,结构声明必须位于单独的 .c 文件中吗?这有多重要?

c - 使用 C 中的 openssl 库进行简单的 AES 加密解密

编译器和解释器之间的混淆?

java - 将 key 和 SSL 证书导入 java keystore

r - 无法安装 'RCurl' (Rcurl.h :4:23: fatal error: curl/curl. h: No such file or directory)

ubuntu - 如何在 clion 中添加 libcurl

c - 在 C 中将指针作为函数参数传递