繁体   English   中英

libcurl gnutls_handshake()失败:收到了TLS警告警报

[英]libcurl gnutls_handshake() failed: A TLS warning alert has been received

我基本上试图做以下事情:

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-openssl替换libcurl-gnutls

我注意到证书错误只是使用libcurl而不是使用浏览器的程序生成的,因此我认为GNUTLS的某些内容是错误的而不是证书。

这对我有用(Ubuntu 12.04 LTS):

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

所有依赖libcurl的程序在我替换库之后立即开始正常工作(我还重新编译了程序以防万一)。

注意:此解决方案仅在您收到GNUTLS警告时才会帮助您,但不会使用浏览器。 也就是说,我假设证书链实际上已正确设置。

我尝试了上述解决方案,但这对我不起作用。 在python中,我尝试了以下选项,它有效地强制SSLv3并禁用TLS。

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

在PHP中,应该可以通过将CURLOPT_SSLVERSION选项设置为3来完成。

您获得的“通常”警告意味着没有任何知名组织(证书颁发机构)愿意保证其真实性。 这就是“通常”警告意味着什么,这就是TLS警告告诉你的。

尝试将CURLOPT_SSL_VERIFYHOST为0或安装适当的证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM