Как использовать аргумент пароля в командной строке для расшифровки openssl

Как использовать аргумент пароля в командной строке для расшифровки openssl

Так что это не самая безопасная практика передавать пароль через аргумент командной строки. Тем не менее, документация по openssl сбила меня с толку относительно того, как передать аргумент пароля в команду openssl.

Вот что я пытаюсь сделать

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

Затем запрашивается ключ доступа для расшифровки. Я искал в документах openssl и в интернете, чтобы попытаться найти ответ, если я просто хочу дать пароль команде, не пытаясь повторить пароль в файле. Я пробовал добавлять -pass:somepasswordand -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

Связанный контент