Как подписать что-то с помощью dgst в сочетании с pkcs8

У меня есть зашифрованный ключ pkcs # 8. Я хочу подписать файл этим ключом, не расшифровывая его заранее. Я хочу выполнить весь процесс с помощью одной команды openssl.

Примерно так:

openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out 
sign_this.txt.signed sign.txt

Эта команда запросит пароль, а затем сгенерирует подпись.

Можно ли вложить команды с помощью openssl? Пожалуйста, объясните, как действовать дальше.

Спасибо.

0
27.07.2017, 07:38
1 ответ

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...)...

Не знаю, считаете ли вы это одной командой или нет.

0
28.01.2020, 04:43

Теги

Похожие вопросы