如何找到SSL证书文件的路径?

发布于 2021-01-29 15:59:39

我想使用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获取此信息?还是我缺少一些更基本的东西?

关注者
0
被浏览
175
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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(简短版):

    • 将其放在您的网址栏中 chrome://settings/certificates
    • 选择标签“权限”
    • 找到您的内部CA,然后单击 export
    • 最好的格式是“ Base64编码的证书链”
    • 保存到可以再次找到它的位置
    • 现在您可以使用`request.get(url,verify =)

    您还可以通过以下方式访问证书管理器:

    (适用于chrome的步骤,与其他浏览器非常相似)

    • 前往设置
    • 点击底部的“显示高级设置”
    • HTTPS / SSL->“管理证书”
    • 往上看


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看