GPT太好用了,上代码
from cryptography.hazmat.primitives.serialization.pkcs12 import load_key_and_certificates
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
def convert_p12_to_pem(p12_file, password, pem_file):
with open(p12_file, 'rb') as f:
p12_data = f.read()
# Load the PKCS12 data
private_key, certificate, additional_certs = load_key_and_certificates(
p12_data, password.encode(), default_backend()
)
# Extract the private key
if private_key:
private_key_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption()
)
else:
private_key_pem = b''
# Extract the certificate
if certificate:
certificate_pem = certificate.public_bytes(
encoding=serialization.Encoding.PEM
)
else:
certificate_pem = b''
# Write to PEM file
with open(pem_file, 'wb') as f:
f.write(private_key_pem)
f.write(certificate_pem)
# 使用示例
p12_file = 'XXX1.p12'
password = 'XXXX'
pem_file = 'XXX1.pem'
convert_p12_to_pem(p12_file, password, pem_file)