Verificar la firma S / MIME sin certificado incluido

3

Firmemos un archivo con

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

Con la opción -no certs no se incluye certificado en file.sign .

Ahora, si intentas verificar file.sign :

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

Obtienes

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

El ejemplo funciona, si firmas sin -nocerts por supuesto.

Pero, ¿hay alguna manera de decirle openssl verify cómo encontrar el certificado?

    
pregunta user1511417 29.12.2017 - 17:31
fuente

2 respuestas

3

Aparte: te refieres a openssl smime -verify (o al openssl cms -verify más reciente y ligeramente mejor). openssl verify es una operación muy diferente que verifica uno o más cert (s) contra un almacén de confianza y, opcionalmente, un propósito.

Desde la página del manual que está en su sistema si es Unixy, o en la web en enlace (énfasis añadido):

  

-certfile file

     

Permite especificar certificados adicionales. Al firmar estos se incluirán con el mensaje. Al verificar estos se buscarán los certificados de los firmantes. Los certificados deben estar en formato PEM.

    
respondido por el dave_thompson_085 30.12.2017 - 03:07
fuente
2

Para su interés, esto funciona. (Créditos al usuario dave_thompson_085 )

Firmar :

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

Verificar :

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

Examinar / visualizar:

openssl cms -in file.sgn -noout -cmsout -print
    
respondido por el user1511417 30.12.2017 - 11:50
fuente

Lea otras preguntas en las etiquetas