当前位置: 首页 > 面试题库 >

如何为Github更新httplib2的cacerts.txt?

陶鸿畴
2023-03-14
问题内容

我正在尝试将Github API与httplib2一起使用。但是当我向它的端点发出请求时,它给了我以下错误:

import httplib2
h = httplib2.Http()
h.request('https://api.github.com/gists')
# OUT: Traceback (most recent call last):
# OUT:   File "<input>", line 1, in <module>
# OUT:   File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1570, in request
# OUT:     (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
# OUT:   File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1317, in _request
# OUT:     (response, content) = self._conn_request(conn, request_uri, method, body, headers)
# OUT:   File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1252, in _conn_request
# OUT:     conn.connect()
# OUT:   File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1044, in connect
# OUT:     raise SSLHandshakeError(e)
# OUT: SSLHandshakeError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我可以使用以下解决方法:

h = httplib2.Http(disable_ssl_certificate_validation=True)
h.request('https://api.github.com/gists')
# OUT: ({'content-length': '58443' ...

但这仍然是一种解决方法,我想知道如何使用httplib2为Github正确验证SSL证书。在Google上搜索时,我发现我应该更新cacerts.txt该库,但不知道如何更新Github的证书授权。还是通过https发送请求而没有证书验证问题的其他正确方法?


问题答案:

UPD:
最简单的方法是在Firefox中打开GitHub,依次查看页面信息->安全->查看证书->详细信息->导出->作为PEM文件。而且最好使用请求。

从Firefox提供的有关https连接的信息中,我发现GitHub的证书是“
DigiCert高保证EV根CA”,可以在以下位置找到:http :
//curl.haxx.se/ca/cacert.pem

证书文本可以粘贴到httplib2.__path__ + '/cacerts.txt'或保存到单独的文件中,然后使用以下方法创建http连接:

h = httplib2.Http(ca_certs='/path/to/that/file')

这也是有关此主题的有用文章。



 类似资料:
  • httplib2是一个使用python写的支持的非常全面的http特性的库。需要Python2.3或更高版本的运行环境,0.5.0版及其以后包含了对Python3的支持。 简单的例子:   import httplib2h = httplib2.Http(".cache")resp, content = h.request("http://example.org/", "GET")   认证实例:

  • 每个人 我不知道是否已经有人问过这个问题,但我到处找,但找不到。我正在使用GitHub进行Intellij IDEA项目。我在工作中使用我的台式计算机来开发。完成后,我在Github上做了一个提交,它直接在我的帐户上。但是,有时我想在家里继续使用笔记本电脑,使用同一个项目并修改和提交它。由于不太了解Github与Intellij的集成,我知道我可以将现有项目下载到本地计算机上。但我的问题是,如何更

  • 问题内容: 嘿,我注意到在浏览GitHub存储库时,它使用AJAX加载每个文件夹/文件。 我了解所有这些,我只是想知道他们如何更改URL。您可以使用JavaScript获取并设置URL吗?如果是这样,对于将基于JavaScript的网站的一部分添加为书签可能非常有用。(其中的几页,通过JavaScript在其中移动) 谢谢。 问题答案: 它在历史记录操作API中使用了新的push/ pop状态功能

  • 我想使用中引入的新的功能。但是,我不知道如何更新到最新版本的GitHub桌面(不是git本身)。 我安装了GitHub for desktop并希望它附带最新的版本,但是返回。但如果我没有理解错的话,我们已经是2.6.x版本了!那么我如何才能在我的Windows机器上更新到这个版本,在那里我安装的git的唯一版本是GH Desktop呢?

  • 问题内容: 转到任何GitHub 页面,然后单击任何目录/文件,并观察URL的更改方式,但仅更新页面的一部分。没有整个页面重新加载。 我如何使用jQuery做类似的事情? 这对大多数浏览器都有效吗(我使用的是Chrome)? 问题答案: 他们使用历史记录API,或者专门使用。 您可以使用它,不需要jQuery,但是有一些插件,例如history.js。 这适用于大多数浏览器,即Chrome,Saf

  • 描述: 这次被第三方扫到有资安问题,此项目已有几千次commit,发现第435次被员工上传敏感资料 + 几次commit message也有问题 个人知识: 我个人只会覆盖最新一笔的救援方式,想不到如何无害解决此问题 能想到解决方式: 最差情况可能需要狠下心全部git重来,但之后无法再查之前 history