Так что это не самая безопасная практика передавать пароль через аргумент командной строки. Тем не менее, документация по openssl сбила меня с толку относительно того, как передать аргумент пароля в команду openssl.
Вот что я пытаюсь сделать
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d
Затем запрашивается ключ доступа для расшифровки. Я искал в документах openssl и в интернете, чтобы попытаться найти ответ, если я просто хочу дать пароль команде, не пытаясь повторить пароль в файле. Я пробовал добавлять -pass:somepassword
and -pass somepassword
как с кавычками, так и без них, но безрезультатно.
Я наконец нашел ответ и увидел, что на некоторых других форумах у людей были похожие вопросы, поэтому я решил опубликовать свой вопрос и ответ здесь для сообщества.
примечание: я использую openssl версии 0.9.8y
решение1
Документация была мне не очень понятна, но в ней был ответ, проблема была в том, что я не мог увидеть пример.
Вот как это сделать:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword
Обратите внимание, что синтаксис команды командной строки всегда -pass
начинается с пробела, а затем следует тип предоставляемой вами парольной фразы, т. е. pass:
для простой парольной фразы следует сама парольная фраза после двоеточия без пробела.
Кроме того, в документации указано, что вы можете указать другие источники парольной фразы, выполнив следующие действия:
env:somevar
чтобы получить пароль из переменной средыfile:somepathname
чтобы получить пароль из первой строки файла по адресуpathname
fd:number
чтобы получить пароль из номера дескриптора файла.stdin
для чтения из стандартного ввода
Теперь, когда я написал этот вопрос и ответ, все кажется очевидным. Но, конечно, потребовалось некоторое время, чтобы разобраться, и я видел, как это занимало у других примерно столько же времени, так что надеюсь, это сократит время и ответит быстрее для других! :)
В OpenSSL 1.0.1e параметром для использования является -passin
или -passout
. Таким образом, этот пример будет:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword
решение2
Я использовал -passin
и -passout
для установки паролей к обоим файлам в примере:
openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321
где 123
и 321
пароль
решение3
На данный момент Ubuntu 14.04 LTS поставляется с openssl 1.0.1f-1ubuntu2.16
В этой версии используется параметр-k
Пример:
openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword