Saltar al contenido

Firma digital para un archivo usando openssl

Solución:

Forma alternativa de firmar / verificar un sencillo, inspirada en la respuesta de Anders Lindahl.

para firmar

openssl dgst -sha256 -sign snakeoil.key -out some-file.sha256 some-file 

para verificar

# dgst -verify requires the public key
openssl x509 -in snakeoil.crt -pubkey -noout > snakeoil.pub

openssl dgst -sha256  -verify  snakeoil.pub -signature some-file.sha256 some-file

# in case of success: prints "Verified OK"
# in case of failure: prints "Verification Failure", return code 1

# or compact (requires a modern shell)
openssl dgst -sha256  
    -verify  <(openssl x509 -in snakeoil.crt -pubkey -noout) 
    -signature some-file.sha256 some-file

Sí, los componentes dgst y rsautl de OpenSSL se pueden utilizar para calcular una firma dado un par de claves RSA.

Firma:

openssl dgst -sha256 data.txt > hash
openssl rsautl -sign -inkey privatekey.pem -keyform PEM -in hash >signature

Verificando solo la firma:

openssl rsautl -verify -inkey publickey.pem -pubin -keyform PEM -in signature

Actualización: capturando los comentarios de Reto desde abajo porque este es un matiz importante. Presumiblemente, si se va a tomar la molestia de verificar, desea saber que la firma se produjo en el texto sin formato al que se adjunta:

Esto puede parecer obvio para algunos, pero: tenga en cuenta, rsautl verify simplemente descifra el archivo signature. Se garantiza que la salida de esta llamada será producida por el propietario de la clave privada, pero además de eso, no se verifica nada más. Entonces, para verificar realmente la consistencia de data.txt tienes que regenerar el resumen y luego compararlo con la salida de openssl rsautl -verify.

Verificar que el propietario de la clave privada responda data.txt:

openssl dgst -sha256 -verify publickey.pem -signature signature data.txt

Para esta operación, openssl requiere la clave pública, la firma y el mensaje.

Para firmar digitalmente documento en openssl funcionará

Para esto, primero debe confiar en su certificado, se vería así

-----BEGIN TRUSTED CERTIFICATE-----
MIIDbjCCAlYCCQCOyunl25ProDANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJJ
...
-----END TRUSTED CERTIFICATE-----

Luego usa el siguiente comando

smime -sign -signer certificate.pem -inkey private.key -in test.txt 
    -out test1.txt -from ashish -to singhal
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *