OpenSSL加密错误:[(' PEM例程',' PEM_read_bio','没有开始行')]

时间:2016-05-09 16:27:45

标签: python openssl certificate

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

OpenSSL.crypto.Error: [('PEM routines', 'PEM_read_bio', 'no start line')]
运行OpenSSL.crypto.load_certificate(FILETYPE_PEM, filename)

。我做了一些研究,但未能找到特定于我的案例的答案。

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

此外,在终端openssl X509 -in file.pem上执行时,它就像魅力一样。

file.pem如下所示:

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

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

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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