如何解决 python openssl load_cert_chain 函数错误?

Posted

技术标签:

【中文标题】如何解决 python openssl load_cert_chain 函数错误?【英文标题】:How can I solve python openssl load_cert_chain function error? 【发布时间】:2019-10-22 09:06:59 【问题描述】:

我正在使用 Pytoh 设置一个新服务器,tornado。 我要设置HTTPS。 但是当服务器加载服务器证书文件时,load_cert_chain 函数会产生错误。 我从 GoDaddy 购买了这些证书文件,之前在 Apache Server 上还可以。 所以证书文件和密钥文件匹配,ca文件也可以。

python 版本:3.7.4 龙卷风版本:4.5.2 openssl 版本:OpenSSL 1.1.1c 2019 年 5 月 28 日

ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain("../server.crt", "../server.key")
ssl_ctx.load_verify_locations("../ca.crt")
ssl_ctx.verify_mode = ssl.CERT_REQUIRED
https_server = tornado.httpserver.HTTPServer(app, ssl_options=ssl_ctx)

这是错误信息。 ssl_ctx.load_cert_chain("../server.crt", "../server.key") ssl.SSLError: [SSL] PEM 库 (_ssl.c:3854)

【问题讨论】:

证书有不同的格式,请确保提供匹配的格式 感谢您的友好回复。是的。我已经通过sslshopper.com/certificate-key-matcher.html 确认了这一点。 好吧 ssl_ctx.load_cert_chain 显然需要一个全链证书,但是您提供带有 cert_key 的证书,您应该研究一下证书链:) 谢谢。所以你的意思是我应该从中获取完整的链证书文件并将其用作参数? 在我看来合乎逻辑 【参考方案1】:

我解决了这个问题。我使用 nginx 服务器来托管带有数字签名证书的 python 服务器。

【讨论】:

以上是关于如何解决 python openssl load_cert_chain 函数错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证在Python SSL证书

通过离线安装包解决了 from cryptography.hazmat.bindings._openssl import ffi, lib ImportError: /usr/local/python

openssl version 查看openssl 版本出现openssl: error while loading shared libraries: libssl.so.1.1: cannot o

openssl: error while loading shared libraries: libssl.so.1.1

解决Mac安装M2Crypto提示无法找到openssl头文件问题

Django]Django Python3出现Error loading MySQLdb module解决