Tôi cần tạo tệp PKCS12 trong python sẽ chứa chứng chỉ tự ký và khóa cá nhân cho nó. Tôi đã tập hợp mã python sau cho tác vụ này:Có thể tạo tệp PKCS12 (.pfx) đúng trong Python không?
import OpenSSL
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 1024)
cert = OpenSSL.crypto.X509()
cert.set_serial_number(0)
cert.get_subject().CN = "me"
cert.set_issuer(cert.get_subject())
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(10*365*24*60*60)
cert.set_pubkey(key)
cert.sign(key, 'md5')
open("certificate.cer", 'w').write(
OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert))
open("private_key.pem", 'w').write(
OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key))
p12 = OpenSSL.crypto.PKCS12()
p12.set_privatekey(key)
p12.set_certificate(cert)
open("container.pfx", 'w').write(p12.export())
Mã này tạo tệp .cer mà tôi có thể xem trong Windows và có vẻ đúng. Nó cũng tạo tệp ".pfx" được dự định là vùng chứa "PKCS # 12" có chứng chỉ và khóa cá nhân tương ứng - một thứ cần thiết để ký các tệp thi hành. Thật không may, nếu tôi cố gắng để mở này "pfx" tập tin trên Windows nó không thành công với 'tập tin không hợp lệ' lỗi, và phân tích nó thông qua công cụ dòng lệnh cũng thất bại:
certutil -asn container.pfx
Không với 'lỗi giải mã' tại giữa tệp.
Có điều gì đó tôi đang làm sai trong mã của tôi hoặc Python + OpenSSL không nhằm mục đích tạo tệp PKCS # 12 hợp lệ trong Windows?
P.S. Tôi đang sử dụng phiên bản ActivePython 2.7 32 bit mới nhất.
giả định Rất hợp lý :) –
Oh. Một lần nữa, bản dịch tự động "\ n" này làm tôi đau trong một vài giờ làm việc: (Cảm ơn rất nhiều! Stackoverflow thật tuyệt vời :). – grigoryvp
Tôi cũng trượt lên trên này trong vài giờ! Cảm ơn bạn đã đăng bài :-) –