Подтвердить что ты не робот

Работа с openssl для извлечения информации из сертификата pkcs12

Мне нужна помощь с командой openssl. Мне нужно автоматизировать извлечение строки subject = в сертификате pkcs12 для script, над которым я работаю.

Я использовал openssl для просмотра содержимого Identity/Certificate:

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# 
4b9b3361

Ответ 1

Попробуйте следующее:

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`

Ответ 2

Копирование ответа здесь, чтобы удалить этот вопрос из фильтра "Без ответа":

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

Ответ 3

Вы также можете использовать -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

Это несколько лет спустя; Я не знаком с openssl и т.д.; но поскольку я не вижу ссылки на "-nokeys", я дам то, что работает для меня.

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

из manpage

stdin     read the password from standard input.