【问题标题】:SSL certificates downloadSSL证书下载
【发布时间】:2015-11-15 02:23:39
【问题描述】:

我正在尝试使用来自 python 的 requests 包来访问这个站点:https://egov.uscis.gov/casestatus/landing.do 当我运行这个命令时:

requests.get('https://egov.uscis.gov/casestatus/landing.do')

当您的身份验证失败时,我收到了常见的 SSL 错误。

通读stackoverflow并采用其中一种解决方案:下载(.crt)中的证书,然后使用openssl转换为.pem文件。然后,我将此 .pem 文件中的内容复制到 cacert.pem 的末尾。然而这并没有奏效。

>>> requests.get('https://egov.uscis.gov/casestatus/landing.do')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\api.py", line 69, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\adapters.py", line 431, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

关于如何在不诉诸verify=False 的情况下克服这个问题的任何指示

另外通过https://superuser.com/a/97203https://superuser.com/a/176721下载文件有什么区别吗?

因为我对requests.get('https://www.google.com')没有问题,所以其他网站对你下载的证书有限制吗?

【问题讨论】:

    标签: python-2.7 ssl python-requests


    【解决方案1】:

    egov.usics.gov does not provide SSL 握手中的完整链。

    在站点管理员修复证书链问题之前,您需要采用类似于here 建议的解决方法。您的案例中的中间证书可以从https://ssl-tools.net/certificates/yuox7i-symantec-class-3-secure-server-ca获得

    【讨论】:

      【解决方案2】:

      设置CA证书的三种方式:

      • $ pip install certifi 然后
        &gt;&gt;&gt; requests.get(url, verify=certifi.where())

      • &gt;&gt;&gt; requests.get(url, verify='/path/to/cert_bundle_file')

      • &gt;&gt;&gt; os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/cert_bundle_file'
        &gt;&gt;&gt; requests.get(url)

      【讨论】:

      • 以上都不起作用。我现在的问题是我是否正确下载了证书:我目前正在使用这个建议 -> superuser.com/a/97203.
      猜你喜欢
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2016-08-02
      • 2020-01-13
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多