Ich habe zwei Lösungen für dein Problem gefunden.
Du kannst rsautl auf diese Weise verwenden: (mit privatem Schlüssel: my.key und öffentlichem Schlüssel my-pub.pem)
$ openssl rsautl -sign -inkey my.key -out in.txt.rsa -in in.txt
Geben Sie den Passwort für my.key ein:
$ openssl rsautl -verify -inkey my-pub.pem -in in.txt.rsa -pubin
Bonjour
Bei dieser Methode wird das gesamte Dokument innerhalb der Signaturdatei eingeschlossen und vom abschließenden Befehl ausgegeben.
Aber in meinem Fall sagt mein Zertifikat: Signaturalgorithmus: sha1WithRSAEncryption. Daher empfehle ich dir, den Standardweg zum Signieren von Dokumenten in 4 Schritten zu verwenden: (Diese Methode wird für alle asymmetrischen elektronischen Signaturen verwendet, um die Signaturdatei und/oder die CPU-Auslastung nicht zu überlasten)
- Erstellen eines Digests des zu signierenden Dokuments (Sender)
- Signieren des Digests mit privatem Schlüssel (Sender)
- Erstellen eines Digests des zu überprüfenden Dokuments (Empfänger)
- Überprüfen der Signatur mit öffentlichem Schlüssel (Empfänger)
OpenSSL führt dies in zwei Schritten aus:
$ openssl dgst -sha256 -sign my.key -out in.txt.sha256 in.txt
Geben Sie das Passwort für my.key ein:
$ openssl dgst -sha256 -verify my-pub.pem -signature in.txt.sha256 in.txt
Verifizierung erfolgreich
Bei dieser Methode sendest du dem Empfänger zwei Dokumente: die Originaldatei Klartext und die Signaturdatei signierter Digest. Achtung: Die Signaturdatei enthält nicht das gesamte Dokument! Nur den Digest.
2 Stimmen
Dein Ansatz ist korrekt, mir fehlte der Digest-Teil. Ich versuchte, das gesamte Dokument zu signieren! Vielen Dank für deine Hilfe! Ich habe auch einige nützliche Links gefunden, die ich zum Erstellen der X.509-CA verwendet habe: sandbox.rulemaker.net/ngps/m2/howto.ca.html octaldream.com/~scottm/talks/ssl/opensslca.html