При использовании OpenSSL в bash есть два способа использования переменной среды в качестве пароля:
pass:"${var}"
и env:var
.
Мне интересно, какой метод обеспечивает наибольшую безопасность, поскольку на странице руководства создается впечатление, что ps
можно прочитать пароль, переданный как pass:"${var}"
, и что это также возможно с env:var
.
Соответствующий раздел страницы руководства OpenSSL:
Аргументы парольной фразы
Несколько команд принимают аргументы пароля, обычно используя -passin и -passout для входных и выходных паролей соответственно. Они позволяют получать пароль из различных источников. Оба эти параметра принимают один аргумент, формат которого описан ниже. Если аргумент пароля не указан и требуется пароль, то пользователю предлагается ввести его: он обычно считывается с текущего терминала с отключенным эхом.
пароль:пароль
фактический пароль — password. Поскольку пароль виден утилитам (например, 'ps' в Unix), эту форму следует использовать только там, где безопасность не важна.
env:var
получить пароль из переменной окружения var. Поскольку окружение других процессов видимо на определенных платформах (например, ps в некоторых ОС Unix), эту опцию следует использовать с осторожностью.
решение1
Страница руководства довольно ясно описывает этот вопрос, вам следует использоватьenv:varметод.
Страница руководства верна, все параметры командной строки видны через ps toвсе пользователив системе.
alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456
evil$ ps aux|grep openssl
alice 17594 115 0.0 17108 4424 pts/6 R+ 11:02 0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456
Если вы используете переменную среды, другой пользователь (кроме root) сможет увидеть только имя этой переменной, но не ее содержимое.
alice$ OPENSSLPW=123456
alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW
evil$ ps aux|grep openssl
alice 17713 115 0.0 17108 4424 pts/6 R+ 11:02 0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW