无法获取本地颁发者证书 mac OS
Posted
技术标签:
【中文标题】无法获取本地颁发者证书 mac OS【英文标题】:Unable to get local issuer certificate mac OS 【发布时间】:2021-03-10 08:59:21 【问题描述】:在 Mac OS BigSur 上的 Python3.9 上运行一个简单的请求,我收到了这个错误:
HTTPSConnectionPool(host='store.immediasys.com', port=443): url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1091)')))
import requests
try:
t = requests.get("https://store.immediasys.com/")
except Exception as e:
pass
我已经尝试在 Python3.9 文件夹中运行安装证书,并且我已经安装和更新了证书。有什么帮助吗?它发生在不同的网站上。
【问题讨论】:
【参考方案1】:本网站的证书由Sectigo RSA Organization Validation Secure Server CA
签署。您的 Python 安装缺少此证书。从Sectigo web site 下载并添加到 Python 证书中。
证书的路径:python -m certifi
只需将下载的证书附加到该文件即可。请注意,您可能必须在每次更新 certifi
时将此证书附加到 CRT 文件中
【讨论】:
感谢您的回答朴,问题是;我在几个网站上都发布了这个问题,我想知道是否有更大的解决方案。 @AlexandreCavalcante,更大的解决方案是强制 Mozilla 将此证书包含在其受信任的 CA 列表中,因为cetifi
使用 Mozilla 的数据库。
其实@AlexandreCavalcante指的更大的问题是,使用python.org的mac安装程序后,新安装的Python版本找不到系统证书。运行 ssl.create_default_context().cert_store_stats()
时,您可能会看到有 0 个证书。我为此提出了一个问题:bugs.python.org/…
因此,更大的解决方案是:RTM。 :P 在安装程序的最后,它说运行一些 certificate.command 文件以安装一组合理的证书。【参考方案2】:
来自 python.org 的 Read Me.rtf for Mac python 二进制文件声明如下:
此 Python 3.7 变体包含其自己的 OpenSSL 私有副本 1.1.1。不再使用已弃用的 Apple 提供的 OpenSSL 库。这意味着系统和用户中的信任证书 钥匙串访问应用程序和安全管理的钥匙串 Python ssl 不再将命令行实用程序用作默认值 模块。 /Applications/Python 中包含一个示例命令脚本 3.7 从第三方 certifi 包中安装精选的默认根证书包。
我也遇到了这个问题,在运行脚本(称为Install Certificates.command
)后,一切正常,我不再收到错误。
向 cmets 中的@SamBull 致敬以指出这一点。
【讨论】:
以上是关于无法获取本地颁发者证书 mac OS的主要内容,如果未能解决你的问题,请参考以下文章