自己署名証明書とその秘密鍵を含むPKCS12ファイルをPythonで生成する必要があります。このタスクのために次のPythonコードを組み立てました。
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() )
このコードは、Windowsで表示できる.cerファイルを作成します。これは正しいようです。また、証明書と対応する秘密鍵(実行可能ファイルに署名するために必要なもの)を含む「PKCS#12」コンテナーを目的とした「.pfx」ファイルも作成します。残念ながら、この「.pfx」ファイルをWindowsで開こうとすると、「ファイルが無効です」というエラーで失敗し、コマンドラインツールを使用した解析も失敗します。
certutil -asn container.pfx
ファイルの途中で「デコードエラー」で失敗します。
それは私のコードで間違っていることですか、それともPython + OpenSSLはWindowsで有効なPKCS#12ファイルを作成することを意図していませんか?
PS私は最新のActivePython2.732ビットディストリビューションを使用しています。