我需要使用我们公司授权签署的证书对服务器进行 HTTPS 调用。如何配置 python 以信任此证书颁发机构?
问问题
1272 次
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 回答