44

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

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

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

Затем запрашивается ключ доступа для расшифровки. Я искал документы openssl и веб-сайты, чтобы попытаться найти ответ, если я просто хотел дать пароль команде, не пытаясь отобразить пароль в файле. Я попытался добавить -pass:somepassword и -pass somepassword как с кавычками, так и без них, но безрезультатно.

Я, наконец, понял ответ и увидел, что на некоторых других форумах у людей были похожие вопросы, поэтому я решил опубликовать свой вопрос и ответить здесь для сообщества.

примечание: я использую openssl версии 0.9.8y

3 ответа3

83

Документация была не очень понятна для меня, но у нее был ответ, задача была не в том, чтобы увидеть пример.

Вот как это сделать:

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

4

На данный момент 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
2

Я использовал -passin и -passout для установки паролей к обоим файлам в примере:

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

где 123 и 321 - пароль

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .