无法获取本地颁发者证书 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的主要内容,如果未能解决你的问题,请参考以下文章

openssl 无法获取本地颁发者证书 debian

Laravel/MailChimp:无法获取本地颁发者证书

证书验证失败:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书

PHP - SSL 证书错误:无法获取本地颁发者证书