在python中读取证书(.crt)和密钥(.key)文件

时间:2016-08-05 06:44:06

标签: python pyopenssl python-jira

所以我使用JIRA-Python模块连接到我公司在JIRA上的实例,它要求我传递证书和密钥。 但是,使用OpenSSL模块,我无法读取本地证书和密钥以将其传递给请求。

阅读代码在

之下
import OpenSSL.crypto 
c = open('/Users/mpadakan/.certs/mpadakan-blr-mpsot-20160704.crt').read()
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c)

我得到的错误是

Traceback (most recent call last):
File "flaskApp.py", line 19, in <module>
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c)
TypeError: must be X509, not str

有人可以告诉我如何将我的本地.crt和.key文件读入x509对象吗?

2 个答案:

答案 0 :(得分:0)

.crt文件中的哪种格式。 是吗:

  1. -----BEGIN CERTIFICATE-----
  2. 开头的文字
  3. base64文本以MI字符
  4. 开头
  5. \x30字节开头的二进制数据?
  6. 在前两种情况下有PEM格式,但在第二种情况下你缺少凝视线,只需添加它以获得正确的PEM文件或使用base64将文件转换为二进制并获得第三种情况。

    在第三种情况下,您有DER格式,因此要加载它,您应该使用OpenSSL.crypto.FILETYPE_ASN1

答案 1 :(得分:0)

@ can-ibanoglu是对的:

import OpenSSL.crypto 
cert = OpenSSL.crypto.load_certificate(
    OpenSSL.crypto.FILETYPE_PEM, 
    open('/tmp/server.crt').read()
)

>>> cert
<OpenSSL.crypto.X509 object at 0x7f79906a6f50>