Ответ 1
Да, dgst и rsautl компонента OpenSSL может использоваться для вычисления подписи с использованием пары ключей RSA.
Заключение:
openssl dgst -sha256 data.txt > hash
openssl rsautl -sign -inkey privatekey.pem -keyform PEM -in hash >signature
Проверка только подписи:
openssl rsautl -verify -inkey publickey.pem -keyform PEM -in signature
Обновление. Захват комментариев Reto снизу, потому что это важный нюанс. Предположительно, если вам не удастся проверить, вы хотите знать, что подпись была написана на открытом тексте, к которому она прикреплена:
Это может показаться очевидным для некоторых, но: Помните, rsault verify
просто расшифровывает файл signature
. Выход этого вызова гарантированно будет производиться владельцем закрытого ключа, но помимо этого ничего не проверяется. Таким образом, чтобы проверить согласованность data.txt
, вам необходимо восстановить дайджест, а затем сравнить его с выходом openssl rsautl -verify
.
Проверка того, что владелец закрытого ключа ручается за data.txt
:
openssl dgst -sha256 -verify publickey.pem -signature signature data.txt
Для этой операции openssl требует открытого ключа, подписи и сообщения.