2011-12-14 34 views
21

Tôi muốn được trợ giúp về lệnh openssl. Tôi cần phải tự động hóa việc truy xuất đối tượng = line trong một chứng chỉ pkcs12 cho một tập lệnh mà tôi đang làm việc.Làm việc với openssl để trích xuất thông tin từ chứng chỉ pkcs12

Tôi đã sử dụng openssl để xem nội dung của Identity/Chứng chỉ:

openssl pkcs12 -info -in /Users/[user]/Desktop/ID.pfx 

Nhưng tôi nhắc ba lần cho mật khẩu. Tôi đã sử dụng -passin để loại bỏ một trong những lời nhắc mật khẩu, nhưng tôi vẫn đang được nhắc nhở cho các cụm từ thông qua PEM và mục xác minh.
Tôi cần tìm ra cách để vượt qua $ {password} cho hai thử thách mật khẩu khác hoặc có vấn đề về scrip ctl-c. Các thông tin tôi cần được xuất ra stdout trước dấu nhắc mật khẩu thứ hai.

Bất kỳ trợ giúp sẽ được đánh giá cao!

Rõ ràng là tôi rút ruột sản lượng giấy chứng nhận cho bài này .... nhưng bạn sẽ nhận được các ý tưởng về những gì tôi đang nhìn thấy:

bash-3.2# openssl pkcs12 -info -in /Users/[user]/Desktop/ID.pfx -passin pass:${password} 
MAC Iteration 2048 
MAC verified OK 
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048 
Certificate bag 
Bag Attributes 
    localKeyID: **** 
    friendlyName: **** 
subject=**** 
issuer=**** 
-----BEGIN CERTIFICATE----- 
::HASH REMOVED:: 
-----END CERTIFICATE----- 
PKCS7 Data 
Shrouded Keybag: **** 
Bag Attributes 
    localKeyID: **** 
    friendlyName: **** 
Key Attributes: <No Attributes> 

Enter PEM pass phrase: 
Verifying - Enter PEM pass phrase: 

-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: 

::HASH REMOVED:: 
-----END RSA PRIVATE KEY----- 
bash-3.2# 
+0

Có lẽ bạn nên đăng một tệp .pfx/.p12 mẫu cho trường hợp của bạn. Ngoài ra, hãy xem xét sử dụng các tùy chọn như '-clcerts',' -nokeys', '-password'. Ngoài ra hãy thử 'openssl pkcs12 -help'. – abbot

+0

openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass: $ {password} thực hiện thủ thuật. Cảm ơn bạn đã chỉ cho tôi đi đúng hướng! – Sonic84

Trả lời

23

Hãy thử điều này:

$ openssl pkcs12 -in ~/cert.p12 -nodes \ 
    -passin pass:"my password" | openssl x509 -noout -subject 

Hoặc này cho common name (ruby để st rip dấu cách trắng):

$ openssl pkcs12 -in ~/cert.p12 -nodes \ 
    -passin pass:"my password" | openssl x509 -noout -subject \ 
    | awk -F'[=/]' '{print $6}'`.strip` 
10

Sao chép câu trả lời ở đây để loại bỏ câu hỏi này khỏi "Chưa trả lời "lọc:

openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass:${password} 
0

Đây là một vài năm muộn; Tôi không quen thuộc với openssl, & vv; nhưng kể từ khi tôi thấy không có tham chiếu đến "-nokeys" tôi sẽ cho những gì làm việc cho tôi.

echo -e "$password\n$passphrase\n$passphrase\n" \ 
| openssl pkcs12 -in /Users/[user]/Desktop/ID.pfx -passin stdin -passout stdin 

từ manpage

stdin  read the password from standard input. 
2

Bạn cũng có thể sử dụng -passin-passout đó sẽ không nhắc bạn một lần nữa cho đầu vào bằng tay. Đây là mã mẫu:

openssl pkcs12 -in seldpush_dev.p12 -passin pass:$password -passout pass:$password | \ 
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | \ 
openssl x509 -subject -noout 

Về cơ bản, sử dụng -keyword để tìm nạp giá trị đó. Trong trường hợp của bạn, -subject.

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