Como assinar algo com dgst combinado com pkcs8

0

Eu tenho uma chave criptografada pkcs # 8. Eu gostaria de assinar um arquivo usando essa chave sem ter que descriptografá-lo antecipadamente. O que eu quero alcançar é fazer todo o processo com um único comando openssl.

Algo parecido com isto:

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

Este comando solicitará a senha e depois gerará a assinatura.

É possível aninhar comandos com o openssl? Por favor, explique o caminho certo para prosseguir.

Obrigado.

    
por John Smith 27.07.2017 / 06:38

1 resposta

0

openssl dgst -sign com -keyform der (não -inform ) aceita apenas a chave privada. No entanto, esse comando pode aceitar todos os 4 formatos PEM para privatekey: legacy clear ou criptografado e pkcs8 clear ou criptografado. Para uma chave criptografada você precisa fornecer a senha quando ela é usada, é claro; Presumo que o seu "sem decifrar antecipadamente" não é para excluir isso.

Operações da linha de comando pkcs8 rsa pkey irá converter uma chave privada criptografada do DER para o PEM apenas decriptografando e re-criptografando (ambos exigindo a senha), mas você pode fazer isso diretamente por algo como:

 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 

No Unix em alguns shells (notavelmente bash) você pode fazer isso de uma vez por

 openssl dgst -sha256 -sign <(printf ... base64 ... printf ...) ...

Não sei se você conta isso como um único comando ou não.

    
por 27.07.2017 / 07:54

Tags