如何解决Python请求库不接受asp net core dev证书
我目前正在尝试使用 python 向 asp net core (.NET 5) API 发出一个简单的 get 请求。 API 在 kestrel 上以默认设置运行(仅限 HTTPS,允许 HTTP 1 和 2)。
问题
问题是,我的电话
r = requests.get("https://localhost:5001/api/authentication",params=payload,verify='../browser_exported.cer')
产生众所周知的错误
(SSLCertVerificationError(1,'[SSL: CERTIFICATE_VERIFY_Failed] 证书验证失败:无法获取本地颁发者证书
当我通过 verify=False
禁用验证时,一切都按预期工作,但这对我来说不是一个可行的解决方案。
到目前为止我尝试了什么
- 使用有效但不是解决方案的
verify=False
- 浏览网站时通过我的浏览器导出证书作为 base64 编码的 .cer 文件(如 explained here 和 here),并通过
certmgr
导出证书(解释为 {{ 3}}) 虽然两者都调用相同的向导。- 通过
verify='<path>'
将此证书提供给 python(如上所示)。 - 将证书从 certifi 复制到 cacert.pem(使用相同的环境执行用于执行请求的 certifi.where())
- 通过
- 正在安装 python-certifi-win32,但在查看其 here 后,我注意到这只会从 win 证书存储中导入
CA
和ROOT
。 (asp net core dev 证书是这些商店中不存在的自签名证书) - 使用
der
编码导出证书。这产生了预期的错误:SSLError(SSLError(136,'[X509: NO_CERTIFICATE_OR_CRL_FOUND] no certificate or crl found (_ssl.c:4263)')))
- 验证 python 在将其指定为
verify
参数时确实找到了我的证书文件。为此,我给了它一个指向不存在文件的路径,它产生了预期的错误:Could not find a suitable TLS CA certificate bundle,invalid path: ../nothinghere.cer
其他信息
- 我运行的是 Windows 10 2004 19041.804 x64
- Chrome 88.0.4324.182(用于导出证书)
- Python 3.8.5
- 证书 2020.12.5
- 请求 2.25.1
- 我没有支持任何(公司)代理,也没有安装任何 vpn
- asp net core dev 证书未链接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。