我需要使用我们公司权限签署的证书对服务器进行HTTPS调用。如何配置python以信任此证书颁发机构?
答案 0 :(得分:0)
默认情况下(假设您使用的是httplib.HTTPSConnection
),您无需执行任何操作,httplib
doesn't do any certificate verification(same applies to urllib
)。
当然,这不是一个好的,您应该验证服务器证书。有各种解决方案(见this question)。
简而言之,您可能需要扩展httplib.HTTPConnection
以通过ssl.wrap_socket
手动将套接字转换为SSL套接字,以便能够插入验证回调(您需要同时验证两者)主机名和证书)。
或者,如果您不受httplib
限制,使用PycURL肯定会使其更加清晰。您可以配置CA_INFO
(或CA_PATH
)以指向内部CA证书。此外,它通常没有预先定义的CA列表,但您可以从here(从Mozilla列表转换)中获取一个,并将这些证书添加到您信任的CA列表中(如果需要)它
答案 1 :(得分: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选项指向它。