2013-07-22 9 views
5

Zastanawiam się, jak wyodrębnić klucze z pliku Apple .p12. Z mojego ograniczonego rozumowania plik .p12 jest kombinacją certyfikatów X504 i kluczy prywatnych.Wyodrębnij wiele kluczy z jednego pliku .p12 przy użyciu ruby ​​OpenSSL

Widzę, że każdy plik .p12, w którym się znajduję, ma certyfikat X504 i co najmniej jeden klucz, aw niektórych sytuacjach dwa klucze. Wynika to z faktu, że każdy .p12 ma klucz programisty Apple, a niektóre mają dodatkowy klucz (prawdopodobnie klucz autoryzacji Apple). Rozważam tylko te pliki .p12 z dwoma kluczami jako prawidłowymi. Moim celem jest rozróżnienie tych plików .p12, które mają jeden klucz i te, które mają dwa.

Do tej pory korzystałem z OpenSSL do sprawdzania plików X504 i kluczy dowolnego pliku .p12. Na przykład mam ten kod, który wykonuje kontrole na wszystkich .p12 plików w katalogu:

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 

To jest moje wyjście:

#<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> 

klucze Teraz mój problem jest coraz. Jeśli robię coś takiego:

puts p12.key 

uzyskać długi łańcuch na zaszyfrowanych danych tak:

-----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----- 

Moje pytanie brzmi: w jaki sposób można ustalić, czy ten certyfikat ma więcej niż jeden klucz, a także jak mogę sprawdzić klucze dla informacji. Jeśli to, o co proszę, lub moje zrozumienie tego problemu jest zasadniczo wadliwe, proszę dać mi znać. To jest mój pierwszy kontakt z certyfikatami i wszelkie informacje będą bardzo pomocne. Wszelkie punkty we właściwym kierunku zostaną docenione, z góry dzięki.

EDIT:

Korzystanie OpenSSL mogę zobaczyć dwa osłonięte keybags o .p12. Przykład:

openssl pkcs12 -in some_p12.p12 -info -noout 

wyjściowa:

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 

Więc szukam paru rzeczy. Ogólnie rzecz biorąc, czym właściwie są te wabiki? A także, jak mogę je sprawdzić/określić, ile mam na plik .p12 przy użyciu Ruby. Dzięki.

Odpowiedz

0

Plik .p12 zawiera tylko 1 klucz prywatny i zawiera 1 lub więcej kluczy publicznych. Klucze publiczne tworzą łańcuch zaufania.

.p12 to format binarny. Aby przekonwertować i wyodrębnić do poszczególnych certyfikatów, spójrz na przykład here. Łącze zawiera wszystkie potrzebne polecenia openssl.

Powiązane problemy