使用openssl从pkcs12证书中提取信息

Son*_*c84 31 bash openssl osx-lion

我想要一些openssl命令的帮助.我需要在pkcs12证书中自动检索subject =行,以查找我正在处理的脚本.

我使用openssl查看身份/证书的内容:

openssl pkcs12 -info -in /Users/[user]/Desktop/ID.pfx
Run Code Online (Sandbox Code Playgroud)

但我提示三次输入密码.我使用-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# 
Run Code Online (Sandbox Code Playgroud)

Alf*_*sen 34

试试这个:

$ openssl pkcs12 -in ~/cert.p12 -nodes \
    -passin pass:"my password" | openssl x509 -noout -subject
Run Code Online (Sandbox Code Playgroud)

或者这是公用名(ruby to strip trailing whitespace):

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

  • 请注意,在 OSX 和 Linux 以及类似平台上,其他用户可以看到您的命令行参数,包括 `-passin pass:...` 后面的密码 (2认同)

Dre*_*awn 10

在此处复制答案,以便从"未答复"过滤器中删除此问题:

openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass:${password}
Run Code Online (Sandbox Code Playgroud)


小智 5

您也可以使用-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
Run Code Online (Sandbox Code Playgroud)

基本上,用于-keyword获取该值。就您而言,-subject