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:somepassword
com -pass somepassword
e 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 -pass
seguida 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:somevar
para obter a senha de uma variável de ambientefile:somepathname
para obter a senha da primeira linha do arquivo no localpathname
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 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 é -passin
ou -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 -passin
e -passout
para definir senhas para ambos os arquivos no exemplo:
openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321
onde 123
e 321
estã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