我想要一些openssl命令的帮助。我需要在pkcs12证书中自动检索subject =行,以查找我正在处理的脚本。
我使用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 :(得分:27)
试试这个:
$ openssl pkcs12 -in ~/cert.p12 -nodes \
-passin pass:"my password" | openssl x509 -noout -subject
或者这是公用名(ruby to strip trailing whitespace):
$ openssl pkcs12 -in ~/cert.p12 -nodes \
-passin pass:"my password" | openssl x509 -noout -subject \
| awk -F'[=/]' '{print $6}'`.strip`
答案 1 :(得分:10)
在此处复制答案,以便从“未答复”过滤器中删除此问题:
openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass:${password}
答案 2 :(得分:4)
您还可以使用-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
。
答案 3 :(得分:0)
这已经晚了几年;我不熟悉openssl,&amp;等等;但由于我没有看到“-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.