OpenSSL加密错误:[('PEM routines','PEM_read_bio','no start line')]

2024-05-13 14:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试读取证书时出现以下错误:

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

运行OpenSSL.crypto.load_certificate(FILETYPE_PEM, filename)时。我做了一些调查,但没有找到一个具体的答案。

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

另外,在终端上执行时,它就像一个符咒。

文件pem如下所示:

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

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

有什么想法吗?

谢谢!


Tags: 文件no终端read错误errorcertificatefilename
1条回答
网友
1楼 · 发布于 2024-05-13 14:34:31

根据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)

相关问题 更多 >