【发布时间】:2014-12-30 13:57:44
【问题描述】:
下面的代码在 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 的参数的完整路径。”
有什么想法吗?
【问题讨论】: