2

Я экспериментировал с OpenSSL и OpenSSH, и мне не удалось подписать и проверить, используя пары ключей RSA.

Я сделал следующее

Сгенерированные пары ключей:

$ ssh-genkey -b 2048 -t rsa <key-name>

Затем я создал дайджест сообщения:

$ openssl sha1 -sign <key-name> -out rsasign.bin ~/tmp/test.txt

Я попытался проверить подпись, используя соответствующий открытый ключ:

$ openssl sha1 -verify <key-name>.pub -signature rsasign.bin ~/tmp/test.txt

К сожалению, попытка это возвращает ошибку:

unable to load key file

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

Спасибо!

1 ответ1

2

Во-первых, я предполагаю, что вы имеете в виду ssh-keygen , а не ssh-genkey (также моя версия требует, чтобы путь указывался в интерактивном режиме, а не через командную строку, но вывод такой же). :)

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

openssl rsa -in <key-name> -pubout -out public-key.pem

Где public-key.pem - это новый файл, который вы создадите. После того, как я это сделал, упомянутая вами команда проверки завершилась успешно, выдав только Verified OK для моего тестового файла.

Обратите внимание, что приведенная выше команда требует закрытый ключ, а не открытый ключ; Вы можете преобразовать открытый ключ в стиле SSH в открытый ключ в стиле OpenSSL, выполнив:

ssh-keygen -f <key-name>.pub -e -m public-key.pem

Где public-key.pem - снова новый файл, который вы создадите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .