首页 > 解决方案 > Python - [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1091)

问题描述

我有一个 Amazon linux 2 虚拟机,我正在从这个虚拟机发出一个 python 请求。为了提出请求,我使用自签名证书。

我已将自签名证书文件内容附加到文件“/etc/pki/tls/certs/ca-bundle.crt”中。

CURL 命令工作正常,但是当使用 python 的 requests 方法发出请求时,它会抛出以下错误。

错误:( 由 SSLError(SSLCertVerificationError(1,'[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书(_ssl.c:1091)')引起))

我尝试通过提供“MyAppcert.crt”和“ca_bundle.crt”文件的路径来对 Python 请求方法使用“验证”参数,但是这两种方法都失败了。

import requests
requests.get("https://<my-endpoint>:8888/", verify="/home/ec2-user/ssl_cert/MyAppcert.crt")

同样的用例在 Windows 服务器上运行良好。

任何帮助将不胜感激。

问候,

拉胡尔·库姆哈尔

标签: linuxsslpython-requests

解决方案


@SteffenUllrich 感谢您的回复。我使用“openssl x509 -in file.pem -text”验证了我的证书,发现缺少“keyUsage = Certificate Sign”。使用“keyUsage = Certificate Sign”创建新证书后,问题已解决。


推荐阅读