2

我需要使用我们公司授权签署的证书对服务器进行 HTTPS 调用。如何配置 python 以信任此证书颁发机构?

4

2 回答 2

0

默认情况下(假设您使用的是httplib.HTTPSConnection),您无需执行任何操作,这httplib不会进行任何证书验证同样适用于urllib)。

当然,这不是一个好方法,您应该验证服务器证书。对此有多种解决方案(请参阅此问题)。

简而言之,您可能必须手动扩展httplib.HTTPConnection以将套接字转换为 SSL 套接字ssl.wrap_socket,以便能够插入验证回调(您需要验证主机名和证书)。

或者,如果您不受限制httplib,使用PycURL肯定会使这个更干净。您可以配置CA_INFO(或CA_PATH)以指向您的内部 CA 证书。此外,它通常不附带预定义的 CA 列表,但您可以从此处获取一个(从 Mozilla 列表转换而来),如果需要,可以将这些证书添加到您信任的 CA 列表中。

于 2012-05-06T14:54:22.233 回答
0

如果您正在寻找解决此问题的示例代码,它位于PycURL中:

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/your-corporate-certificate-chain.crt")
curl.perform()

确保将 your-corporate-certificate-chain.crt 文件放在可访问的位置,并使用 pycurl.CAINFO 选项指向它。

于 2012-10-25T16:13:24.867 回答