【问题标题】:HTTPS certificate verification using corporate Certification Authority in Python在 Python 中使用企业证书颁发机构进行 HTTPS 证书验证
【发布时间】:2012-05-13 11:52:54
【问题描述】:

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

【问题讨论】:

标签: python ssl https certificate


【解决方案1】:

默认情况下(假设您使用的是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 列表中。

【讨论】:

    【解决方案2】:

    如果您正在寻找解决此问题的示例代码,请查看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 选项指向它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-19
      • 2012-04-18
      • 2018-07-30
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2021-04-13
      • 2015-03-18
      相关资源
      最近更新 更多