使用Python中的企业证书颁发机构验证HTTPS证书

时间:2012-05-03 22:42:35

标签: python ssl https certificate

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

2 个答案:

答案 0 :(得分:0)

默认情况下(假设您使用的是httplib.HTTPSConnection),您无需执行任何操作,httplib doesn't do any certificate verificationsame 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选项指向它。