5

所以我使用 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 对象吗?

4

2 回答 2

2

@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>
于 2017-09-13T20:48:47.717 回答
1

您的文件中的哪种格式.crt。在那里:

  1. 开头的文字-----BEGIN CERTIFICATE-----
  2. MI以字符开头的 base64 文本
  3. 以字节开头的二进制数据\x30

在前两种情况下有 PEM 格式,但在第二种情况下,您缺少凝视行,只需添加它以获得正确的 PEM 文件或将文件转换为二进制文件base64并获得第三种情况。

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

于 2016-08-30T14:51:43.223 回答