Я пытаюсь проверить подпись, но получаю сообщение «Не удается загрузить файл ключа». Это сервер CentOS с OpenSSL версии 1.0.2 (22 января 2015 г.).
Ключи генерируются следующим образом:
ssh-keygen -t rsa -f serverkey -N '' -b 2048
mv serverkey serverkey-priv.pem
ssh-keygen -f serverkey.pub -e -m pem > serverkey-pub.pem ; rm -f serverkey.pub
В результате получается serverkey-priv.pem & serverkey- pub.pem
Я подписываю сообщение следующим образом:
openssl dgst -sha256 -sign serverkey-priv.pem -out message.sig message.txt
Файл message.sig создается нормально. Пока все хорошо.
Однако, когда я пытаюсь проверить сообщение с помощью только что сгенерированного файла sig:
openssl dgst -sha256 -verify serverkey-pub.pem -signature message.sig message.txt
я получаю « не удается загрузить файл ключа. »
Что я делаю неверно?
Я получаю существенно другой результат когда я использую
openssl rsa -in serverkey-priv.pem -pubout -out serverkey-pub.pem
, чем когда я использую
ssh-keygen -f serverkey.pub -e -m pem > serverkey-pub.pem
. Файл открытого ключа, созданный openssl rsa -pubout
, успешно проверяет сообщение. Похоже, что формат файла ssh-keygen -m pem
для открытых ключей несовместим с тем, что ожидает openssl
. Фактически, для чтения информации об открытом ключе с помощью команды openssl rsa -text
требуется -RSAPublicKey_in
, который, похоже, не поддерживается для dgst
.
ssh-keygen должен генерировать как открытый, так и закрытый ключи.
Проверьте его с помощью:
ls -l serverkey*