實例代碼如下:
from OpenSSL import crypto cer_file_path = r"D:\cloudpayDjango\conf\58543195931098400.cer" pfx_file_path = r"D:\cloudpayDjango\conf\58543195931098400.pfx" class ReadKey(object): """用於讀取密鑰""" @staticmethod def get_public_key(cer_file_path): """ 從cer證書中提取公鑰 :param cer_file: cer證書存放的路徑 :return: 公鑰 """ cert = crypto.load_certificate(crypto.FILETYPE_ASN1, open(cer_file_path, "rb").read()) res = crypto.dump_publickey(crypto.FILETYPE_PEM, cert.get_pubkey()).decode("utf-8") return res.strip() @staticmethod def get_private_key(pfx_file_path, password="12345678"): """ 從pfx證書中提取私鑰,如果證書已加密,需要輸入密碼 :param pfx_file_path:pfx證書存放的路徑 :param password:證書密碼 :return:私鑰pkey = crypto.load_pkcs12(key, password).get_privatekey() """ pfx = crypto.load_pkcs12(open(pfx_file_path, 'rb').read(), bytes(password, encoding="utf8")) res = crypto.dump_privatekey(crypto.FILETYPE_PEM, pfx.get_privatekey()) return res.strip() print(ReadKey.get_public_key(cer_file_path)) print(ReadKey.get_private_key(pfx_file_path))