我正在使用pyopenssl lib,我想使用其crypto.PKCS12对象apis生成p12文件。
因此,此证书值是从API获取的,并保存在以下文件中:
echo -e“ -----带有开始和结尾的证书文本-----”> cert.crt
创建文件,当我在命令下运行时,会有正确的输出,即使我在线验证它,也显示一切正常:
openssl x509 -in cert.crt -text -noout
现在的问题是,当使用下面的方法将证书设置为PKCS12对象时,会出现错误:
from OpenSSL import crypto
p12 = crypto.PKCS12()
p12.set_certificate("/home/someuser/Documents/path/to/cert.crt")
然后抛出错误:
文件 “ /home/someuser/.local/lib/python3.6/site-packages/OpenSSL/crypto.py”, set_certificate中的第2429行 引发TypeError(“证书必须是X509实例”)
我无法理解lib为什么抱怨该证书。我在这里想念什么吗?
答案 0 :(得分:0)
在将证书设置为X509
容器之前,需要将证书作为PKCS12
对象加载。
首先,您应该:
结果可能如下所示:
from OpenSSL import crypto
with open("/home/someuser/Documents/path/to/cert.crt", "r") as file:
data = file.read()
x509 = crypto.load_certificate(crypto.FILETYPE_PEM, data);
p12 = crypto.PKCS12()
p12.set_certificate(x509)