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

36

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

Veja o que estou tentando fazer

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

Isso, então, solicita a chave de acesso para descriptografia. Eu procurei os documentos openssl e as interwebs para tentar encontrar a resposta se eu simplesmente quisesse dar a senha para o comando sem tentar repetir a senha para o arquivo. Eu tentei adicionar -pass:somepassword e -pass somepassword com e sem aspas sem sucesso.

Eu finalmente descobri a resposta e vi em alguns outros fóruns que as pessoas tinham perguntas semelhantes, então eu pensei em postar minha pergunta e responder aqui para a comunidade.

nota: estou usando a versão 0.9.8y do openssl

    
por David Sulpy 05.03.2014 / 14:52

2 respostas

73

A documentação não era muito clara para mim, mas tinha a resposta, o desafio não era poder 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 de comando da linha de comando é sempre -pass seguida de um espaço e do tipo de senha que você está fornecendo, ou seja, pass: para senha simples e depois a senha real após os dois-pontos sem espaço. / p>

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

  • env:somevar para obter a senha de uma variável de ambiente
  • file:somepathname para obter a senha da primeira linha do arquivo no local pathname
  • fd:number para obter a senha do número do descritor de arquivo.
  • stdin para ler da entrada padrão

Agora que escrevi esta pergunta e resposta, tudo parece óbvio. Mas certamente demorou algum tempo para descobrir e eu vi isso levar outros tempo semelhante, por isso espero que isso possa reduzir esse tempo e responder mais rápido para os outros! :)

Com o OpenSSL 1.0.1e, o parâmetro a usar é -passin ou -passout . Então, este exemplo seria:

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

    
por 05.03.2014 / 14:52
4

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

Nesta versão, o parâmetro a usar é -k

Exemplo:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword
    
por 27.12.2015 / 14:31