web-dev-qa-db-ja.com

opensslと連携してpkcs12証明書から情報を抽出する

Opensslコマンドのヘルプをお願いします。作業中のスクリプトのpkcs12証明書のsubject =行の取得を自動化する必要があります。

Identity/Certificateの内容を表示するためにopensslを使用しました:

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

しかし、パスワードの入力を3回求められます。パスワードプロンプトの1つを削除するために-passinを使用しましたが、PEMパスフレーズと検証エントリの入力を求められています。
$ {password}を他の2つのパスワードチャレンジに渡す方法を見つけるか、scripにctl-cを発行させる必要があります。必要な情報は、2番目のパスワードプロンプトの前に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# 
30
Sonic84

これを試して:

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

または、これは一般名(Rubyで末尾の空白を削除する)の場合:

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

「未回答」フィルターからこの質問を削除するために、ここに回答をコピーします。

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

-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

4
Ajay. A

これは数年遅れています。私は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.
0
acornblue