我正在尝试写一个pycurl脚本来访问一个安全的站点(HTTPS)。
c = pycurl.Curl()
c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0')
c.setopt(pycurl.URL, 'https://for-example-securedsite')
c.setopt(pycurl.COOKIEFILE, 'cookie.txt')
c.setopt(pycurl.COOKIEJAR, 'cookies.txt')
c.setopt(pycurl.WRITEDATA, file("page.html","wb")) 我收到下面的错误..
pycurl.error:(60,'SSL证书问题,请验证CA证书是否正常。详细信息:\n错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败‘)
代码失败,因为它无法获取SSL证书。
如果我将下面几行代码添加到我的代码中,错误就会消失。
c.setopt(pycurl.SSL_VERIFYPEER, 0)
c.setopt(pycurl.SSL_VERIFYHOST, 0)以上代码将跳过证书验证。但是它受到了“中间人”的攻击。
我知道我的本地证书库中有SSL证书。谁知道如何导出我的证书并使用它我的代码..一些示例代码将是非常棒的。
耽误您时间,实在对不起!
发布于 2012-10-26 00:05:04
你是对的,你这样做会让你受到中间人的攻击,特别是在most recent SSL vulnerabilities的情况下。您可以按如下方式进行解析:
import pycurl
curl = pycurl.Curl()
curl.setopt(pycurl.URL, "https://your-secure-website.com/")
curl.setopt(pycurl.SSL_VERIFYPEER, 1)
curl.setopt(pycurl.SSL_VERIFYHOST, 2)
curl.setopt(pycurl.CAINFO, "/path/to/updated-certificate-chain.crt")
curl.perform()默认情况下,curl带有过期的证书列表。无论您是想要更新它,还是只想使用您自己的证书进行测试,都要确保将更新的-certificate-chain.crt文件放在一个可访问的位置,并使用pycurl.CAINFO选项指向它。
还要确保将pycurl.SSL_VERIFYHOST设置为2,这是最高的安全检查设置。
发布于 2011-12-01 04:43:36
您读过cURL documentation about SSL certificates吗?这似乎直接解决了您的question...in问题,第2项:
2. Get a CA certificate that can verify the remote server and use the proper
option to point out this CA cert for verification when connecting. For
libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath);看起来pycurl模块包含CAPATH选项,所以在代码中实现起来应该很简单。
发布于 2021-05-26 09:24:22
这个问题的解决方案在于通过不安全参数In a cmd terminal we exclusively input the arg '-k'提供对基于'https‘的协议url的curl对象访问
在Pycurl中,我们必须通过下面的方法为curl对象设置相同的选项,并设置最低的安全级别,即'0‘。
c.setopt(pycurl.SSL_VERIFYPEER, 0)
c.setopt(pycurl.SSL_VERIFYHOST, 0)allow the insecure connection之后,就可以毫无障碍地访问SSL了。
https://stackoverflow.com/questions/8332643
复制相似问题