Salut, j'ai généré une paire de clés et utilisé la clé privée pour générer une signature.
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
Cependant je ne peux pas vérifier la signature avec ma clé publique:
openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig
Je sais que -sigfile est obsolète. et une partie du document en ligne de openssl.org est erronée.
Quelle est la commande que je dois utiliser pour vérifier la signature avec ma clé publique?
J'ai trouvé deux solutions à votre problème.
Vous pouvez utiliser rsautl de cette façon: (avec clé privée: my.key et clé publique my-pub.pem)
$ openssl rsautl -sign -inkey my.key -out in.txt.rsa -in in.txt
Enter pass phrase for my.key:
$ openssl rsautl -verify -inkey my-pub.pem -in in.txt.rsa -pubin
Bonjour
Avec cette méthode, tout le document est inclus dans le fichier de signature et est émis par la commande finale.
Mais dans mon cas, mon certificat dit: Algorithme de signature: sha1WithRSAEncryption. Je vous recommande donc d'utiliser la méthode standard de signature de document en 4 étapes: (Cette méthode est utilisée pour toutes les signatures électroniques asymétriques afin de ne pas surcharger le fichier de signature et/ou l'utilisation du CPU)
OpenSSL le fait en deux étapes:
$ openssl dgst -sha256 -sign my.key -out in.txt.sha256 in.txt
Enter pass phrase for my.key:
$ openssl dgst -sha256 -verify my-pub.pem -signature in.txt.sha256 in.txt
Verified OK
Avec cette méthode, vous avez envoyé au destinataire deux documents: le fichier d'origine texte brut, le fichier de signature digest signé. Attention: le fichier de signature ne comprend pas tout le document! Seul le condensé.
votre méthode est fondamentalement correcte. Ce qui vous manque, c'est de dire à rsautl que le fichier de fichier de clés inutiles est une clé publique en ajoutant "-pubin". L'élément "-pubin" Le document rsautl OpenSSL n'est pas précis "-pubin le fichier d'entrée est une clé publique RSA." Devrait être "-pubin le fichier de clé d'entrée est une clé publique RSA." Puisque le fichier d'entrée doit être une signature fichier.
Vérifier à l'aide de la clé publique
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in hello.txt -inkey private.pem -out sig
openssl rsautl -verify -in sig -inkey public.pem -pubin
> plop
Vous pouvez consulter le document pour rsautl
Dans votre exemple, cela donnerait:
openssl rsautl -verify -in sig -inkey aa.pem
J'ai copié mon historique complet ci-dessous:
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
openssl rsautl -verify -in sig -inkey aa.pem
> plop