How to get public key using PyOpenSSL?

给你一囗甜甜゛ 提交于 2020-01-03 10:47:11

问题


I'm tring to create python script, that would take PKCS#12 package and print some information contained in x509 certificate and using for this purpouses PyOpenSSL module. So far i want to fetch from certificate public key. But PKey object doesn't have appropriate method. Where can I move out of here ? Any ideas how to get public key ?

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>

Thanks.


回答1:


First you can load the certificate like this

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

you will see something like

-----BEGIN PUBLIC KEY----- 
....
....
-----END PUBLIC KEY-----



回答2:


I am assuming you want to read the public key from the file.

First install pyopenssl

pip install 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)

You will get output as:

-----BEGIN PUBLIC KEY-----

....

-----END PUBLIC KEY-----




回答3:


Would this work?

print PKey
<OpenSSL.crypto.PKey object at 0x012432D8>

from OpenSSL import crypto

crypto.dump_privatekey(PKey)



回答4:


Instead use:

c.dump_privatekey(c.FILETYPE_TEXT,pubkey)


来源:https://stackoverflow.com/questions/10362965/how-to-get-public-key-using-pyopenssl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!