【发布时间】: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 的证书,您应该研究一下证书链:)
-
谢谢。所以你的意思是我应该从中获取完整的链证书文件并将其用作参数?
-
在我看来合乎逻辑