Подтвердить что ты не робот

Командная строка openssl для проверки подписи

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

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 ошибочны.

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

4b9b3361

Ответ 1

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

Вы можете использовать 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 этапа: (Этот метод используется для всех асимметричных электронных подписей, чтобы не перезаряжать файл подписи и/или использование ЦП)

  • Создать дайджест документа для подписания (отправителя)
  • Знак дайджест с закрытым ключом (отправителем)
  • Создать дайджест документа для подтверждения (получателя)
  • Проверить подпись с открытым ключом (получателем)

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Вы можете проверить документ 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