Como usar o argumento de senha via linha de comando para openssl para descriptografia

Como usar o argumento de senha via linha de comando para openssl para descriptografia

Portanto, não é a prática mais segura passar uma senha por meio de um argumento de linha de comando. Dito isto, a documentação do openssl me confundiu sobre como passar um argumento de senha para o comando openssl.

Aqui está o que estou tentando fazer

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

Isso então solicitará a chave de acesso para descriptografia. Pesquisei nos documentos do openssl e nas interwebs para tentar encontrar a resposta se eu simplesmente quisesse fornecer a senha para o comando sem tentar repetir a senha para o arquivo. Tentei adicionar -pass:somepasswordcom -pass somepassworde sem aspas, sem sucesso.

Finalmente descobri a resposta e vi em alguns outros fóruns pessoas com perguntas semelhantes, então pensei em postar minha pergunta e responder aqui para a comunidade.

nota: estou usando o openssl versão 0.9.8y

Responder1

A documentação não estava muito clara para mim, mas tinha a resposta, o desafio era não conseguir ver um exemplo.

Veja como fazer isso:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

Observe que a sintaxe do comando da linha de comando é sempre -passseguida por um espaço e, em seguida, o tipo de senha que você está fornecendo, ou seja, pass:para a senha simples e, em seguida, a senha real após os dois pontos, sem espaço.

Além disso, a documentação especifica que você pode fornecer outras fontes de senha fazendo o seguinte:

  • env:somevarpara obter a senha de uma variável de ambiente
  • file:somepathnamepara obter a senha da primeira linha do arquivo no localpathname
  • fd:numberpara obter a senha do número do descritor de arquivo.
  • stdinpara ler da entrada padrão

Agora que escrevi esta pergunta e resposta, tudo parece óbvio. Mas certamente levou algum tempo para descobrir e eu já vi outros levarem tempo semelhante, então espero que isso possa reduzir esse tempo e responder mais rápido para outros! :)

Com OpenSSL 1.0.1e o parâmetro a ser usado é -passinou -passout. Então este exemplo seria:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword

Responder2

Eu usei -passine -passoutpara definir senhas para ambos os arquivos no exemplo:

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

onde 123e 321estão a senha

Responder3

Neste momento o Ubuntu 14.04 LTS vem com openssl 1.0.1f-1ubuntu2.16

Nesta versão o parâmetro a ser usado é-k

Exemplo:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

informação relacionada