![](/img/trans.png)
[英]Extract Public Key using pyOpenSSL from certificate or other connection information
[英]How to get public key using PyOpenSSL?
我正在尝试创建 python 脚本,该脚本将采用 PKCS#12 包并打印 x509 证书中包含的一些信息,并为此目的使用 PyOpenSSL 模块。 到目前为止,我想从证书公钥中获取。 但是 PKey 对象没有合适的方法。 我可以从哪里搬走? 任何想法如何获得公钥?
pfx=open('./1.p12','rb').read()
PKCS=crypto.load_pkcs12(pfx)
cert=PKCS.get_certificate()
PKey=cert.get_pubkey()
print PKey
<OpenSSL.crypto.PKey object at 0x012432D8>
谢谢。
首先你可以像这样加载证书
from OpenSSL import crypto
#cert is the encrypted certificate int this format -----BEGIN -----END
crtObj = crypto.load_certificate(crypto.FILETYPE_PEM, cert)
pubKeyObject = crtObj.get_pubkey()
pubKeyString = crypto.dump_publickey(crypto.FILETYPE_PEM,pubKeyObject)
print pubKeyString
你会看到类似的东西
-----BEGIN PUBLIC KEY-----
....
....
-----END PUBLIC KEY-----
我假设您想从文件中读取公钥。
首先安装pyopenssl
pip 安装 pyopenssl
from OpenSSL import crypto
import os
file_path = os.path.join(os.getcwd(),'/certificates/test.crt')
f = open(file_path, "r")
cert = f.read()
pub_key_obj = crypto.load_certificate(crypto.FILETYPE_PEM, cert).get_pubkey()
pub_key = crypto.dump_publickey(crypto.FILETYPE_PEM,pub_key_obj)
print(pub_key)
您将获得如下输出:
-----开始公钥-----
....
-----结束公钥-----
这行得通吗?
print PKey
<OpenSSL.crypto.PKey object at 0x012432D8>
from OpenSSL import crypto
crypto.dump_privatekey(PKey)
而是使用:
c.dump_privatekey(c.FILETYPE_TEXT,pubkey)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.