在 python ssl 中使用自我证书验证时出错
getting error using self certificate verification in 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.I 可以看到我的证书在 load_cert_chain 之后加载 context.get_ca_certs()
2.I 尝试了 context.verify_flags |= 0x80000
但没有成功。
如果ctx.verify_mode = False
那么我可以正确连接,但它不会受到保护。
由于 Whosebug 上现有的最佳答案是使用 ctx.verify = False
但事实并非如此,我希望这次能找到真正修复它的人。
谢谢
检查 wireshark 后,我看到 python 抛出了错误的错误。问题不在于自身证书,而是“证书未知”并且 SSL 握手失败。
所以可以用ssl.CERT_REQ
来完成
出现以下错误:
[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.I 可以看到我的证书在 load_cert_chain 之后加载 context.get_ca_certs()
2.I 尝试了 context.verify_flags |= 0x80000
但没有成功。
如果ctx.verify_mode = False
那么我可以正确连接,但它不会受到保护。
由于 Whosebug 上现有的最佳答案是使用 ctx.verify = False
但事实并非如此,我希望这次能找到真正修复它的人。
谢谢
检查 wireshark 后,我看到 python 抛出了错误的错误。问题不在于自身证书,而是“证书未知”并且 SSL 握手失败。
所以可以用ssl.CERT_REQ
来完成