在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连接的特定服务器的证书。

证书路径&key_path是我自己的证书和私钥,用于建立双向ssl。

我检查过的东西:

1.我可以在context.get_ca_certs()中的load_cert_chain之后看到我的证书被加载

2.我试过context.verify_flags |= 0x80000,但没用。

如果是ctx.verify_mode = False,那么我可以正确连接,但它将不安全。

由于StackOverflow上现有的最佳答案是使用ctx.verify = False,而不是这样,我希望这次能找到真正修复它的人。

感谢

在检查wireshark后,我看到python抛出了错误的错误。问题不在于自我证书,而是";证书未知";SSL握手失败。

所以它可以用ssl来完成。CERT_REQ

最新更新