首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python请求证书验证在Windows上失败

Python请求证书验证在Windows上失败
EN

Stack Overflow用户
提问于 2018-06-07 14:32:45
回答 2查看 5.2K关注 0票数 4

我使用请求连接到REST,我有一个证书包和一个.pem密钥,我用它来验证我是谁。我在Ubuntu机器上工作的证书和代码,所以我知道证书是好的。

不久前,我在Linux上设置它时遇到了类似的问题,当我将这些证书放入etc/pki/tls/certs时,会抛出异常。当我将这些证书转移到etc/ssl/certs时,一切都很完美。

为了清楚起见,我已经使用这些证书对目录进行了散列,尽管我并不确定散列的重要性。

所以,我的问题是:我应该把这些证书放在Windows上的哪里?

下面是代码片段:

代码语言:javascript
运行
复制
import requests

private_key = '\path\to\private\key.pem'
cert_bundle = '\path\to\bundle'
url = 'https://www.securedsite.com/api-entry'

session = requests.Session()
session.cert = private_key
session.verify = cert_bundle
try:
    resp = session.post(url)    
except:
    # Exception

在Windows上,我现在有证书:

'C:\stuff\admin\private\core_admin.pem‘ ‘c:\\admin\certs\’

软件版本:

  • Windows 10
  • Python 3.6.3
  • 请求2.18.4
  • openssl 1.0.2l

供参考的linux机器是:

  • Ubuntu 16.04.1 4.13.0-39-泛型
  • Python 3.6.3
  • 请求2.18.4
  • openssl 1.0.2l

在代码中,我使用路径库路径来构建路径,这样我就可以在linux和windows之间来回切换,所有东西都可以在linux上工作。我想我只是需要在哪里放置我的证书的指导。

EN

回答 2

Stack Overflow用户

发布于 2019-04-25 18:15:47

在Windows上,您通常会将它们导入证书管理器(“开始”,然后根据您的范围“管理计算机证书”或“管理用户证书”)。把它们放到合适的位置。Python使用此证书存储。

但是,请求默认使用自己的请求,但您可以绕过它。有关如何从那里继续的详细信息,请参阅SSL failure on Windows using python requests

小心,这是个深兔子洞。有关这方面的更多背景信息,请参见https://github.com/kennethreitz/requests/issues/2966

票数 4
EN

Stack Overflow用户

发布于 2021-10-13 12:09:10

默认情况下,不使用默认的,而是使用https://pypi.org/project/certifi/提供的PEM文件。

若要添加新的CA根证书,请执行以下任一操作:

  • 找出您的PEM文件存储在:python -c "import certifi ; print(certifi.where())"中的位置,将CA根证书添加到该文件中。
  • 安装https://pypi.org/project/python-certifi-win32/,使证书能够使用。在那里安装CA根证书。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50743896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档