У меня есть зашифрованный ключ pkcs # 8. Я хочу подписать файл этим ключом, не расшифровывая его заранее. Я хочу выполнить весь процесс с помощью одной команды openssl.
Примерно так:
openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out
sign_this.txt.signed sign.txt
Эта команда запросит пароль, а затем сгенерирует подпись.
Можно ли вложить команды с помощью openssl? Пожалуйста, объясните, как действовать дальше.
Спасибо.
openssl dgst -sign
с-keyform der
(не-inform
)принимает только чистый закрытый ключ. Однако эта команда может принимать все 4 формата PEM для секретного ключа :, устаревшего открытого или зашифрованного, а также открытого или зашифрованного pkcs8. Конечно, для зашифрованного ключа вам необходимо указать пароль при его использовании; Я предполагаю, что ваше «без расшифровки заранее» не предназначено для исключения этого.
Операции командной строки pkcs8 rsa pkey
преобразуют зашифрованный закрытый ключ из DER в PEM только путем расшифровки, а затем повторного -шифрования (для обоих требуется пароль ), но вы можете сделать это напрямую, например:
printf '%s\n' "-----BEGIN ENCRYPTED PRIVATE KEY-----" >tempkey.pem
openssl base64 <pk8derfile >>tempkey.pem
printf '%s\n' "-----END ENCRYPTED PRIVATE KEY-----" >>tempkey.pem
# variants with sed, awk, perl, etc are possible if better for you
# and of course change filename(s) if you like
openssl dgst -sha256 -sign tempkey.pem <data -out signature
В Unix в некоторых оболочках (особенно bash )вы можете сделать все это -в -один раз по
openssl dgst -sha256 -sign <(printf... base64... printf...)...
Не знаю, считаете ли вы это одной командой или нет.