2013-07-22 6 views
5

Appleの.p12ファイルからキーを抽出する方法が不思議です。私の限られた理解から、.p12ファイルはX504証明書と秘密鍵の組み合わせです。OpenSSLルビーを使用して1つの.p12ファイルから複数のキーを抽出する

私が実行しているすべての.p12ファイルには、X504証明書と少なくとも1つのキーがあり、場合によっては2つのキーがあります。これは、すべての.p12にアップルの開発者キーがあり、一部に余分なキー(おそらくアップルのルート認証キー)があるためです。私は2つのキーが有効であるこれらの.p12ファイルのみを検討しています。ここでの目標は、1つのキーを持つ.p12ファイルと2つのキーを持つファイルを区別することです。

これまでのところ、X504ファイルと.p12のキーを検査できるようにOpenSSLを使用しました。

Dir.glob('*.p12').each do |p| 
    file = File.read(p) 
    p12 = OpenSSL::PKCS12.new(file, "") 

    # note that this new certificate is in an X509 format 
    cert = p12.certificate 
    puts p12.inspect() 
    puts cert.inspect() 
end 

これは私の出力である:

#<OpenSSL::PKCS12:0x007fcf33018920> 
#<OpenSSL::X509::Certificate subject=/UID=FFBMT4K5/CN=iPhone Distribution: A.H. Belo Management Services, Inc./OU=FFBMT4K5/O=FFBMT4K5/C=US, issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority, serial=36597980220620, not_before=2012-01-11 16:30:22 UTC, not_after=2013-01-10 16:30:22 UTC> 

は今、私の問題は、キーを取得している。たとえば、私は、ディレクトリ内のすべての.p12ファイルのための検査を行い、このコードを持っています私はこのような何か場合:

puts p12.key 

を私はこのような暗号化されたデータに長い文字列を取得:

-----BEGIN RSA PRIVATE KEY----- 
MIIEowIBAAKCAQEA4Pet7CZrPr4x/SKjMwy5avXmcguzQlix/vBq+qq7aKQhctKr 
d5HE7wk4jWbDGj7Rf9ckeFFMktTTbKYmnKCywCct/uJmgavFl1+t45DIQL2V1JMU 
JSXvtjDXoKFweKQgdiha5mBNL70+ivqxMzJJw19E+MhFoZ6tFOgQ5gPLcDLR5WTU 
ezxH9RbXGWbq+CMBjJ+lw8/Ako7IOm+d95ZTM6u333qp0dsn+1/I/zGeWE1gJXIl 
8mIkvrp7+BDTvXHYALADwXnXijqvd/bANfetsDQ+gxRnc06dFt114JUuptcXGwbg 
//ykDzNYhuibQD1Z65KfTB/ntQ1aE5FtHEXirwIDAQABAoIBACNCrt/0pZqP9QXY 
B/xYYjeBkz0M2GvtuvhadmoTmIwuLY/xtS5oipVsvJBtKudSMUP4VJ8HHxlkgj7l 
S+gAyAOWIH9yvN5WLgIr3PVuG/UJwhIve1jXOVs1DJcAtsAx+WSLrrOtJGv3HXZr 
FJsRpr4YkJbtzPwoArjkJsHmllxfT2zeQPMJy+RQ/qlHUqsude/ahC0I3RiW3SgB 
EKTNM1vGTEkox8bUUhHqNY3ERlihFpZC2wSkroETDY3RkSjuPkNy7uT/b66a/qjj 
qaIA0YLhNOYGdN2llJN5GJjYYVKakpiipqcHCFrV1+JtbFB2tKhqAvK6fjCZcSFF 
fW58owECgYEA/g8FvAPcejPR3O8E1ydNWChhd9UZQUeQNCET+lY3Dxwklk+u1140 
yw/u2hUoNdJLfev1HtlYruglD9jW/LGoLaPodQfcHcaCSfdJa1mmKfSieApOe15+ 
ijO3WpZK/MJUTteGVMW/B/QnxPBGtsDo6q2v2YxA7fOhzmImn5hgxlsCgYEA4q/A 
DBKe1WDZPUyG3R/Cfl5AEqEHly6VkCPFF+uYFZzep/SN/ez34r7fmcfl0RL7H9kn 
Q4WBaCMbCgG9dErORW99usoBsjys5pojstNJDZwACUg9rPnV/+uUqMyocjeN0Vrl 
2Vg0dC8HH1hLZPLkp+MAy2nNzmnnHcTKiTqsDT0CgYEApVzfzaXxvvS1t4k37Fbf 
h+8YqefhfVT4LoYNO9ccFVCrG88XrYTa9gUT4Yz91DJiAr8vl/m+OHJPlUX9gRKd 
tb9HEc2g3xyTN1OmzSHX/t0FVv7WYIR79rZ8tJC4lFZki8DK5aikk6e+rvf5/wAH 
WqDcocwhgwAeJHhMTXrgGpsCgYBGYqWx2fJBdNHfK6zQafUdAazJXACcW5WK7OBc 
vgU56Lxl0BRqnLKXUAbjm+Lq2Qbqa6W6XHDC4euaXtHxkuybOLQEVIbUTeytqXye 
IOaU+DQ2rZyg4e4liYNeKjW/SSqar6ugobefv55piCPY02ZWDrEHd/G0PsPJRXpR 
w8r6TQKBgFMoEZKywokRIbMCUHHRR3TVeizBMhbNUUmOiRhzsHZPJ2V63PNp3L1c 
0NsRo62mbekXDRH8J0C8fLG4R64Y7+rHBQo0tBpgYepPU0NCrsojF7brtYYb3VqI 
baVEPRhIy2tJylDad6M36DeOCIhvXalh8GaV/HhEr4lxykth+mGH 
-----END RSA PRIVATE KEY----- 

を私の質問はどのように私はまた、この証明書は、複数のキーを持っているかどうかを判断し、可能ですどのように情報のキーを検査することができます。私が尋ねていること、またはこの問題の理解に根本的に欠陥がある場合は、私に知らせてください。これは証明書に公開された初めてのことであり、どんな情報であれ大いに役立ちます。適切な方向のポイントは、事前に感謝します。

編集:私は.P12の2包まkeybagsを表示することができますOpenSSLを使用して

。例:

openssl pkcs12 -in some_p12.p12 -info -noout 

が出力:

Enter Import Password: 
MAC Iteration 1 
MAC verified OK 
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048 
Certificate bag 
Certificate bag 
PKCS7 Data 
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048 
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048 

だから私はカップルの事を探しています。一般に、これらのキーバッグは正確には何ですか?また、Rubyを使用して.p12ファイルあたりのファイル数を調べたり、それらを調べたりするにはどうすればよいですか。ありがとう。

答えて

0

.p12には1つの秘密鍵のみが含まれ、1つ以上の公開鍵が含まれています。公開鍵は、信頼の連鎖を作るものです。

.p12はバイナリ形式です。それを変換して個々の証明書に抽出するには、たとえばhereを探します。このリンクには、必要なすべてのopensslコマンドが含まれています。

関連する問題