Автоматизация получения пароля easyrsa для пользователя и pem-фразы CAPython

Программы на Python
Ответить
Anonymous
 Автоматизация получения пароля easyrsa для пользователя и pem-фразы CA

Сообщение Anonymous »

У меня есть функция, которая пытается сгенерировать пару ключей с помощью easyrsa и выглядит следующим образом:

Код: Выделить всё

...
def easyrsa_gen_req(self):
variables = self.__set_env()
try:
command = (
f"{self.easyrsa_binary} gen-req {self.email} "
f"--passin env:EASYRSA_PASSIN "
f"--passout env:EASYRSA_PASSOUT"
)
proc = subprocess.Popen(
command, shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=variables
)
stdout, stderr = proc.communicate()
print(f"OUT: {stdout.decode()}")
print(f"ERROR: {stderr.decode()}")
return True, self.user_password
except:
import traceback
traceback.print_exc()
return False, None
...
Функция __set_env выглядит следующим образом:

Код: Выделить всё

...
def __set_env(self):
env_vars = os.environ.copy()
variables = self.conf['easyrsa']['env_vars']
for variable in variables:
if "$PASSWORD$" in variable['value']:
variable['value'] = self.conf['easyrsa']['password']
if "$USERPASS$" in variable['value']:
variable['value'] = self.user_password
env_vars[variable['key']] = variable['value']
return env_vars
...
Переменные env считываются из файлов JSON и выглядят следующим образом:

Код: Выделить всё

...
"env_vars": [
{"key": "EASYRSA_BATCH", "value": "1"},
{"key": "EASYRSA_REQ_CN", "value": "vpn.me.dev"},
{"key": "EASYRSA_PASSIN", "value": "$PASSWORD$"},
{"key": "EASYRSA_PASSOUT", "value": "$USERPASS$"}
],
...
При запуске этой функции она работает, но меня запрашивают парольную фразу PEM.
Я пробовал заменить --pass(out|in) с паролем:паролем для каждого, а также просто полностью удалив его и добавив в переменные env. Это по-прежнему запрашивает у меня пароль независимо от того, что я делаю. Я ожидаю, что он примет переменные passin и passout и будет использовать их вместо запроса.

Код: Выделить всё

$ python test.py
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
OUT:
ERROR: Generating a RSA private key
...............................+++++
..............+++++
writing new private key to '/mnt/c/Users/saman/bin/python/loader/vpn_backend/test_dir/openvpn-ca/pki/private/my.key.uLL8vZbMrF'
-----

True tns-y+0kTu6839V_BCIjvnK

Как я могу успешно автоматизировать это, чтобы он не запрашивал у меня ключ PEM? Я бы предпочел не использовать nopass.

Подробнее здесь: https://stackoverflow.com/questions/793 ... pem-phrase
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»