我想使用Python请求获得公司内部网页的内容(比如, https://internal.com )。 我可以在浏览器中看到这个页面,我可以“查看证书”。
所以现在我想有请的网页,所以我做的:
import requests
requests.get('https://internal.com')
但后来我得到一个SSLError:
SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
所以我想我需要指定一个证书文件:
requests.get('https://example.com', cert=('/path/server.crt', '/path/key'))
但我怎么找到路径证书文件? 查看网页时,我可以从Chrome或IE这个信息? 还是我失去了一些更基本的?
该cert
的参数是客户端验证。 如果你想证明你的身份到服务器。 如果这是问题,你会得到在服务器上的错误。
你需要的是服务器端的认证。 服务器必须证明它的身份。 当你正在连接到内部服务器的请求并没有在它提供的捆绑,因此不能确认身份的服务器该服务器证书。 你必须提供与您的内部CA-捆绑请求。 要做到这一点,你必须首先从您的浏览器将其解压缩。
从文档:
You can also pass "verify" the path to a "CA_BUNDLE" file for private certs.
You can also set the "REQUESTS_CA_BUNDLE" environment variable.
铬(短版):
- 把这个在您的网址吧
chrome://settings/certificates
- 选择标签“权威”
- 寻找你的内部CA,并单击
export
- 最好的格式是“Base64编码证书链”
- 保存到一个位置,在那里你会找到它
- 现在你可以使用`request.GET中(URL,验证=)
您还可以通过访问证书管理器:
(铬步骤,非常相似于其他浏览器)
- 前往设置
- 点击“显示高级设置”底部
- HTTPS / SSL - > “管理证书”
- 往上看