2011-12-14 26 views
21

Me gustaría obtener ayuda con el comando openssl. Necesito automatizar la recuperación de la línea subject = en un certificado pkcs12 para un script en el que estoy trabajando.Trabajar con openssl para extraer información de un certificado pkcs12

He usado openssl para ver el contenido de la Identidad/Certificado:

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

Pero me pide tres veces para la contraseña. Utilicé -passin para eliminar uno de los mensajes de contraseña, pero todavía me piden la frase de paso PEM y la entrada de verificación.
Necesito encontrar una manera de pasar $ {password} a los otros dos desafíos de contraseñas o hacer que el scrip emita un ctl-c. La información que necesito se envía al stdout antes de la segunda solicitud de contraseña.

¡Cualquier ayuda sería apreciada!

Obviamente destripado la salida del certificado para este post .... pero usted debe tener una idea de lo que estoy viendo:

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

Probablemente debe publicar un archivo .pfx/.p12 de ejemplo para su caso. Además, considere usar opciones como '-clcerts',' -nokeys', '-password'. Pruebe también con 'openssl pkcs12 -help'. – abbot

+0

openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass: $ {password} hizo el truco. ¡Gracias por señalarme en la dirección correcta! – Sonic84

Respuesta

23

Prueba esto:

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

O esto por el nombre común (rubí a st rip trailing whitespace):

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

copia respuesta aquí con el fin de eliminar esta pregunta de la "sin respuesta "filtro:

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

Esto es unos años tarde; No estoy familiarizado con openssl, & etc; pero dado que no veo ninguna referencia a "-nokeys" voy a dar lo que funciona para mí.

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

de página de manual

stdin  read the password from standard input. 
2

También es posible usar -passin y -passout que no se le preguntará de nuevo para la entrada manual. Aquí es un ejemplo de código:

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

Básicamente, utilice -keyword a buscar a ese valor. En su caso, -subject.

Cuestiones relacionadas