2013-07-22 34 views
5

Tôi tự hỏi cách trích xuất các khóa từ tệp .p12 của Apple. Từ sự hiểu biết hạn chế của tôi, tệp .p12 là sự kết hợp giữa chứng chỉ X504 và khóa riêng tư.Trích xuất nhiều khóa từ một tệp .p12 bằng cách sử dụng OpenSSL ruby ​​

Tôi thấy rằng mọi tệp .p12 mà tôi chạy vào đều có chứng chỉ X504 và ít nhất một khóa và trong một số trường hợp, hai khóa. Điều này là do thực tế là mọi .p12 đều có một khóa của nhà phát triển Apple và một số có khóa bổ sung (có thể là khóa ủy quyền gốc của Apple). Tôi chỉ xem xét những tệp .p12 có hai khóa hợp lệ. Mục tiêu của tôi ở đây là phân biệt giữa các tệp .p12 có một khóa và những tệp có hai khóa.

Cho đến nay tôi đã sử dụng OpenSSL để có thể kiểm tra các tệp X504 và các khóa của bất kỳ .p12 nào. Ví dụ tôi có mã này mà không được kiểm tra cho tất cả các file đuôi .p12 trong một thư mục:

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 

Đây là kết quả của tôi:

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

Bây giờ vấn đề của tôi là nhận được chìa khóa. Nếu tôi làm điều gì đó như thế này:

puts p12.key 

tôi nhận được một chuỗi dài trên dữ liệu được mã hóa như thế này:

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

Câu hỏi của tôi là làm thế nào tôi có thể xác định xem chứng chỉ này có nhiều hơn một chìa khóa, và cũng có thể làm thế nào tôi có thể kiểm tra các phím để biết thông tin. Nếu những gì tôi yêu cầu hoặc sự hiểu biết của tôi về vấn đề này về cơ bản là thiếu sót, vui lòng cho tôi biết. Đây là lần đầu tiên tôi tiếp xúc với các chứng chỉ và mọi thông tin sẽ rất hữu ích. Bất kỳ điểm nào trong đúng hướng sẽ được đánh giá cao, cảm ơn trước.

CHỈNH SỬA:

Sử dụng OpenSSL Tôi có thể xem hai túi khóa bao phủ của .p12. Ví dụ:

openssl pkcs12 -in some_p12.p12 -info -noout 

đầu ra:

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 

Vì vậy, tôi đang tìm một vài điều. Nói chung, những gì chính xác là những keybags? Và cũng có thể, làm thế nào tôi có thể kiểm tra chúng/xác định có bao nhiêu tôi có mỗi .p12 tập tin bằng cách sử dụng Ruby. Cảm ơn.

Trả lời

0

A .p12 chỉ chứa 1 khóa riêng và chứa 1 hoặc nhiều khóa công khai. Các khóa công khai là chìa khóa tạo nên chuỗi niềm tin.

.p12 là định dạng nhị phân. Để chuyển đổi và trích xuất các chứng chỉ riêng lẻ, hãy tìm ví dụ here. Liên kết chứa tất cả các lệnh openssl bạn cần.

Các vấn đề liên quan