我基本上是在尝试执行以下操作:
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警告提示。
有谁知道要解决这个问题或者解决这个问题?
答案 0 :(得分:4)
意识到这个问题相当陈旧,已经接受了一个答案,这里有一个替代答案,对我来说非常有用,可能对来自搜索的人有用:
int
替换为libcurl-gnutls
替代。我注意到证书错误只是使用libcurl而不是使用浏览器的程序生成的,因此我认为GNUTLS的某些内容是错误的而不是证书。
这对我有用(Ubuntu 12.04 LTS):
libcurl-openssl
所有依赖libcurl的程序在我更换库后立即开始正常工作(我还重新编译了程序以防万一)。
注意:此解决方案只会在您收到GNUTLS警告但不会使用浏览器时发出警告。也就是说,我假设证书链实际上已正确设置。
答案 1 :(得分:3)
我尝试了上述解决方案,但这对我不起作用。在python中,我尝试了以下选项,它有效地强制使用SSLv3并禁用TLS。
c.setopt(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3)
在PHP中应该可以通过将CURLOPT_SSLVERSION
选项设置为3来完成。
答案 2 :(得分:2)
您获得的“通常”警告意味着没有任何知名组织(证书颁发机构)愿意保证其真实性。这就是“通常”警告意味着什么,这就是TLS警告告诉你的。
尝试将CURLOPT_SSL_VERIFYHOST
设置为0或安装正确的证书。