OpenSSL crypto error: [('PEM routines', 'PEM_read_bio', 'no start line')]

OpenSSL crypto error: [('PEM routines', 'PEM_read_bio', 'no start line')]

我在尝试读取证书时遇到以下错误:

OpenSSL.crypto.Error: [('PEM routines', 'PEM_read_bio', 'no start line')]

当 运行 OpenSSL.crypto.load_certificate(FILETYPE_PEM, filename)。我做了一些研究,但无法找到针对我的案例的答案。

我尝试检查文件是否存在 os.path.isfile(filename) returns True,但仅加载证书会引发上述错误。

此外,在终端 openssl X509 -in file.pem 上执行时,它的效果非常好。

file.pem 看起来像这样:

-----BEGIN CERTIFICATE-----
<<sensitive data>>
-----END CERTIFICATE-----

这似乎是有效的,因为我能够在终端上执行基本的 openssl 操作。我是 运行 CentOS 7,如果有帮助的话。

有什么想法吗?

谢谢!

根据 http://www.pyopenssl.org/en/stable/api/crypto.html#OpenSSL.crypto.load_certificateload_certificate() 需要一个包含证书的缓冲区(字符串即可),而不是文件名。

您需要做的事情:

with open(filename, "r") as my_cert_file:
    my_cert_text = my_cert_file.read()
    cert = load_certificate(FILETYPE_PEM, my_cert_text)