pycurl.error:(35,'错误读取X.509密钥或证书文件')

时间:2014-12-30 13:57:44

标签: python curl pycurl

以下代码适用于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的争论。"

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根本原因是,对于debian,ubuntu,rasbian,pycurl内容绑定到gnutls而不是openssl或windows / mac os加密API。 使用gnutls时,*passwd参数似乎会被默默忽略。所以不支持受保护的密钥文件。

如果您构建的pycurl绑定到openssl,则可以正常运行。如何使用debian / ubuntu,你会发现here

我还为pycurl提交了bug。您可能想订阅此错误。