python - 在 python ssl 中使用自我证书验证时出错
问题描述
收到以下错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1045)
我在许多服务器之间使用自签名证书,现在需要在系统中集成python但无法验证自签名证书。
我正在使用的代码
context = ssl.create_default_context()
context.load_verify_locations("/var/certs.crt")
context.load_cert_chain(certfile=cert_path, keyfile=key_path)
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_REQ
resp = urllib.request.urlopen(url_string, context=ctx)
var/certs.crt包含我正在与之建立 ssl 连接的特定服务器的证书。
cert_path 和 key_path是我自己的证书和私钥,用于建立 2 路 ssl。
我检查过的事情:
1.我可以看到我的证书在load_cert_chain之后被加载context.get_ca_certs()
2.我试过context.verify_flags |= 0x80000
了,但是没有用。
如果ctx.verify_mode = False
那时我能够正确连接,但它不会受到保护。
由于 StackOverflow 上现有的最佳答案是使用ctx.verify = False
,但不是这样,我希望这次能找到真正修复它的人。
谢谢
解决方案
签入wireshark后,我看到python抛出了错误的错误。问题不在于自我证书,而是“证书未知”并且 SSL 握手失败。
所以可以用 ssl.CERT_REQ 来完成
推荐阅读
- javascript - 如何为应用计算实现协程?
- python - FPDF编码在Python中不起作用
- three.js - 三个 js 导入 .obj - 网格显示不正确
- batch-file - 如何使用目录中每个文件的参数启动程序?
- ios - 高内存消耗
- python - 在python中以特殊顺序合并两个列表
- c# - 如何使用 Win32_ComputerSystem 类转换支持的总内存
- javascript - 从 ReactJS 上传到 NodeJS 时,Req.file 未定义
- javascript - 我无法获取查询到 influxdb 的最新记录
- node.js - 如何从node.js打印变量到html