Verifica firma S / MIME senza certificato incluso

3

Firma un file con

 $ openssl smime -sign -in file -out file.sign -outform DER -inkey private.pem -signer certificate.pem -nocerts

Con l'opzione -no certs nessun certificato è incluso in file.sign .

Ora se provi a verificare file.sign :

$ openssl smime -verify -in file.sign -inform DER -content file -noverify certificate.pem 

Ottieni

Verification failure
139909488150168:error:2107C080:PKCS7 routines:PKCS7_get0_signers:signer certificate not found:pk7_smime.c:466:

L'esempio funziona, se firmi senza -nocerts ovviamente.

Ma c'è un modo per dire openssl verify come trovare il certificato?

    
posta user1511417 29.12.2017 - 17:31
fonte

2 risposte

3

A parte: intendi openssl smime -verify (o il più recente e leggermente migliore openssl cms -verify ). openssl verify è un'operazione abbastanza diversa che verifica uno o più cert (s) contro un truststore e facoltativamente uno scopo.

Dalla pagina man che si trova sul tuo sistema se Unixy, o sul web al link (corsivo aggiunto):

-certfile file

Allows additional certificates to be specified. When signing these will be included with the message. When verifying these will be searched for the signers certificates. The certificates should be in PEM format.

    
risposta data 30.12.2017 - 03:07
fonte
2

Per il tuo interesse, funziona. (Crediti per l'utente dave_thompson_085 )

Accedi :

openssl smime -sign -nocerts -in file -out file.sgn -inkey private.pem -signer certificate.pem

Verifica :

openssl smime -verify -in file.sgn -noverify -certfile certificate.pem 

Esamina / visualizza:

openssl cms -in file.sgn -noout -cmsout -print
    
risposta data 30.12.2017 - 11:50
fonte

Leggi altre domande sui tag