2012-03-20 145 views
4

我想通過套接字將證書從「證書頒發機構」發送到節點。 我有一個使用此示例創建的證書 https://skippylovesmalorie.wordpress.com/2010/02/12/how-to-generate-a-self-signed-certificate-using-pyopenssl/ 如何將其轉換爲.pem文件,以便我可以通過套接字將其作爲字符串發送,然後將其另一端轉換回.pem並使用get_certificate從中提取此證書。 Python: reading a pkcs12 certificate with pyOpenSSL.crypto 它可能是一個詭計多端的方式來做到這一點,但我想爲自己簡化它。 (或沒有)PyOpenSSL將證書對象轉換爲.pem文件

我復活這個人衛生組織問題的問題沒有得到回答 How to convert PyOpenSSL object to PEM-encoded string?

回答

7

這是生成證書籤名請求,但這個概念應該是一樣的

from OpenSSL import crypto 

req = crypto.X509Req() 
pkey = crypto.PKey() 
pkey.generate_key(crypto.TYPE_RSA, 2048) 
req.set_pubkey(pkey) 
req.sign(pkey, 'sha1') 
certreq = crypto.dump_certificate_request(crypto.FILETYPE_PEM, req) 
certreq = certreq.replace('-----BEGIN CERTIFICATE REQUEST-----\n', '').replace('-----END CERTIFICATE REQUEST-----\n', '') 
private_key = crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey) 

一個證書,您可以使用:

crypto.dump_certificate(type, cert) 
+0

,如果我只是用這條線 root_cert = crypto.load_證書(crypto.FILETYPE_PEM,certreq)它會將證書轉換爲我以前的格式? – DustBunny 2012-03-21 14:07:22

+0

我相信是這樣。 – turtlebender 2012-03-21 15:05:41

+0

您是否知道我如何從證書中提取公鑰? dump_privatekey有一個很好的功能,但我需要類似的東西。 get_pubkey返回一個對象PKey,我不知道如何轉換爲公鑰 – DustBunny 2012-03-21 21:12:48