командная строка openssl для проверки подписи - PullRequest
21 голосов
/ 28 февраля 2011

Привет! Я сгенерировал пару ключей и использовал закрытый ключ для генерации подписи.

openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig

Однако я не могу проверить подпись своим открытым ключом:

openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig

Я знаю, что -sigfile устарел. и некоторые из онлайн-документа от openssl.org не так.

Какую команду я должен использовать для проверки подписи с моим открытым ключом?

Ответы [ 4 ]

54 голосов
/ 28 февраля 2011

Я нашел два решения вашей проблемы.

Вы можете использовать rsautl таким образом: (с закрытым ключом: my.key и открытым ключом 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

С помощью этого метода весь документ включается в файл подписи и выводится последней командой.

Но в моем случае мой сертификат говорит: Алгоритм подписи: sha1WithRSAEncryption.Поэтому я рекомендую вам использовать стандартный способ подписи документа в 4 этапа: (Этот метод используется для всех асимметричных электронных подписей, чтобы не перегружать файл подписи и / или использование ЦП)

  1. Создать дайджест документа для подписи (отправитель)
  2. Создать дайджест с закрытым ключом (отправитель)
  3. Создать дайджест документа для проверки (получатель)
  4. Проверка подписи с открытым ключом (получатель)

OpenSSL делает это в два этапа:

$ 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

С помощью этого метода вы отправили получателю два документа: исходный файл простой текст , файл подписи подписанный дайджест .Внимание: файл подписи не включает в себя весь документ!Только дайджест.

3 голосов
/ 02 марта 2012

Ваш метод в основном правильный.Что вы упускаете, так это сообщаете rsautl, что файл файла inut key является открытым ключом, добавив «-pubin».Элемент "-pubin" Документ OpenSSL rsautl не точный "-pubin, входной файл является открытым ключом RSA." Должен быть "-pubin, файл входного ключа является открытым ключом RSA." Поскольку входной файл должен быть подписьюфайл.

2 голосов
/ 14 сентября 2016

Проверка с использованием открытого ключа

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
1 голос
/ 28 февраля 2011

Вы можете проверить документ для rsautl

В вашем примере это даст:

openssl rsautl -verify -in sig -inkey aa.pem

Я скопировал всю свою историю ниже:

echo "plop" > "helloworld.txt"
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
openssl rsautl -verify -in sig -inkey aa.pem
> plop
...