以下代码适用于Windows,但在Ubuntu上我收到错误(35,'错误读取X.509密钥或证书文件')。似乎pycurl无法找到证书文件的路径:
c.setopt(c.URL, self.INTERFACE_URL)
c.setopt(c.POST, True)
c.setopt(c.HTTPHEADER, ["Content-Type: text/xml"])
c.setopt(c.HTTPAUTH, c.HTTPAUTH_BASIC)
c.setopt(c.USERPWD, self.AUTHORIZATION_PASS)
c.setopt(c.POSTFIELDS, body)
c.setopt(c.SSL_VERIFYPEER, True)
c.setopt(c.SSLVERSION, 3)
c.setopt(c.CAINFO, "geotrust.pem");
c.setopt(c.VERBOSE, True)
c.setopt(c.SSL_VERIFYHOST, 2)
c.setopt(c.SSLCERT, "WS*******._.1.pem")
c.setopt(c.SSLKEY, "WS*******._.1.key")
c.setopt(c.SSLKEYPASSWD, "**********")
c.setopt(c.WRITEFUNCTION, response.write)
c.perform()
c.close()
我找到了一个可能没有帮助的解决方案:
" Pycurl似乎同时将CAINFO和CAPATH设置为默认值,这可能会导致一些混乱。我设置我的使用者使用CAPATH,并且必须调用c.unsetopt(pycurl.CAINFO)以使事情正常工作。我忘记了在发送这封电子邮件之前我遇到了这个困难。 另一种可能性是pycurl无法找到证书 你在CAINFO的论证中提供了。您可以尝试提供 完整的路径作为对CAINFO的争论。"
有什么想法吗?