从Python中的.pfx证书获取公钥

时间:2018-05-01 21:16:45

标签: python google-cloud-platform public-key-encryption pem pfx

我这样做是为了处理pfx证书,写出一个pem文件。

我怎样才能拔出public_key?我注意到p12对象没有get_publickey()方法。

import contextlib
import OpenSSL.crypto
import os
import requests
import ssl
import tempfile
pfx_password = 'thiscertpassword' 
tpem = 'temppem.pem' 
pfxfile = 'fts.pfx' 


f_pem = open(tpem, 'wb')
pfx = open(pfxfile, 'rb').read()
p12 = OpenSSL.crypto.load_pkcs12(pfx, pfx_password)

f_pem.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, 
p12.get_privatekey()))
#f_pem.write(OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,  
p12.get_publickey()))  # NO SUCH METHOD 
f_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, 
p12.get_certificate()))

1 个答案:

答案 0 :(得分:1)

提取适用于写入文件或用于进一步处理(例如对Signed-JWT进行评估)的公共密钥的示例代码。重要的一点是从证书中提取了公钥。

我将此代码与Google服务帐户P12凭据一起使用。

此代码生成的公钥如下所示:

wmic service get PathName | findstr apache

Python 3.x代码:

b'-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFDEADbeefMIIBCgKCAQEA5vFQucW2JW2WBhLI3dB0\n8OIkgCJPJDxoJ65kphmFSB2ZWsejV/iSecoIBYLyD2+HdHJm8pUgOOy05lm07gei\n0BRqLNYtUk2nlQIMoLPXxv23+VOWdpN/mYUsRhRwB13Aq4BybxObq+c7b08YWitI\nEtPmSEv+YkKlpcGzQcfctT7GNjjBqWuUuM1dxAqJll6JIEGAWEsDeTh9YOqnBnRb\nAWxI62D9/9bVnLkRWv0S9gfOZLuboVBhBSbHQyjbeefDeAd1J6nToug7wdxC66r1\n55lLzf9Ow9KPlsj30d6Alv59xX9QEU3MfIEfyxGiIHNTX6g8A3XUHOtgdmDyVB//\nXwIDAQAB\n-----END PUBLIC KEY-----\n'