2011-12-14 8 views
21

Desidero qualche aiuto con il comando openssl. Devo automatizzare il recupero della subject = line in un certificato pkcs12 per uno script su cui sto lavorando.Utilizzo di openssl per estrarre informazioni da un certificato pkcs12

ho usato OpenSSL per visualizzare il contenuto della identità/certificato:

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

Ma mi viene richiesto tre volte per la password. Ho usato -passin per eliminare uno dei prompt della password, ma mi viene comunque richiesto il pass word e la voce di verifica PEM.
Ho bisogno di capire un modo per passare $ {password} alle altre due sfide per le password o avere il problema di scrip a ctl-c. Il pezzo di informazioni di cui ho bisogno viene emesso sullo stdout prima della seconda richiesta di password.

Qualsiasi aiuto sarebbe apprezzato!

Ovviamente ho sventrato l'uscita certificato per questo post .... ma si dovrebbe ottenere l'idea di quello che sto vedendo:

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

Probabilmente dovresti pubblicare un file .pfx/.p12 di esempio per il tuo caso. Inoltre, considera l'uso di opzioni come '-clcerts',' -nokeys', '-password'. Prova anche a 'openssl pkcs12 -help'. – abbot

+0

openssl pkcs12 -nokeys -in /Users/[User]/Desktop/ID.pfx -passin pass: $ {password} ha fatto il trucco. Grazie per avermi indicato nella giusta direzione! – Sonic84

risposta

23

Prova questo:

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

O questo per il nome comune (rubino 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 risposta qui al fine di rimuovere questa domanda dal "Senza risposta "Filtro:

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

Questo è un ritardo di alcuni anni; Non ho familiarità con openssl, & ecc; ma poiché non vedo riferimenti a "-nokeys" darò ciò che funziona per me.

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

dalla pagina di manuale

stdin  read the password from standard input. 
2

Si potrebbe anche usare -passin e -passout che non si sarebbe chiesto di nuovo per l'immissione manuale. Ecco un esempio di codice:

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

In sostanza, utilizzare -keyword per andare a prendere quel valore. Nel tuo caso, -subject.