2011-12-14 440 views
21

我想要一些openssl命令的幫助。我需要在我正在處理的腳本的pkcs12證書中自動檢索subject =行。使用openssl從pkcs12證書中提取信息

我使用OpenSSL的查看標識/證書的內容:

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

但我提示輸入密碼三次。我使用-passin來消除其中一個密碼提示,但我仍然被提示輸入PEM密碼短語和驗證條目。
我需要找出一種方法將$ {password}傳遞給其他兩個密碼挑戰,或讓腳本發出ctl-c。我需要的信息在第二次密碼提示之前輸出到stdout。

任何幫助,將不勝感激!

很顯然,我燒燬了這個職位的證書輸出....但你應該得到我所看到的想法:

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

可能您應該爲您的案例發佈示例.pfx/.p12文件。另外,請考慮使用諸如`-clcerts`,`-nokeys`,`-password`等選項。也可以嘗試`openssl pkcs12 -help`。 – abbot 2011-12-14 08:03:01

回答

23

試試這個:

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

或者這爲通用名稱(紅寶石ST rip trailing whitespace):

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

複製的答案在這裏,以從「未答覆刪除此問題「過濾器:

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

這是晚了幾年;我不熟悉openssl,&等;但因爲我沒有看到「-nokeys」的提及,所以我會給出適合我的東西。

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

從手冊頁

stdin  read the password from standard input. 
2

你也可以使用-passin-passout這將不會再提示您手動輸入。這裏是一個示例代碼:

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

基本上,使用-keyword來獲取該值。在你的情況下,-subject