Задать пароль от приватного ключа удостоверяющего центра в командной строке

Задача: Мне необходимо автоматизировать процесс создания пользователей для ovpn. Будет использоваться awx, поэтому необходимо написать команду так чтобы все что может затребовать команда передавать через атрибуты или как-нибудь по другому. Суть в том чтобы ничего не запрашивало c консоли.

Пользовательские ключи и сертификаты созданы. Далее необходимо авторизовать удостоверяющим центром пользовательский сертификат. При такой процедуре требует пароль от приватного ключа CA. Я с помощью аттрибута -keyfile указал ссылку на этот файл. Однако у меня все равно требует Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:. Вот команда:

sudo openssl ca -batch -config /etc/openvpn/keys/safessl-easyrsa.cnf -out /tmp/keys/client.crt -in /tmp/keys/client_unpass.crt -keyfile /etc/openvpn/keys/private/ca.key -cert /etc/openvpn/keys/ca.crt

Не делаю средствами easy-rsa, т.к. не соответствует моим требованиям. ( Для защиты, избегаю инструкции nopass, а там нету атрибута для проброса пароля).

Вопрос: Можно ли пробросить пароль от приватного ключа CA в команду? Сделать что то вроде echo "Password" > sudo openssl ca -batch -config /etc/openvpn/keys/safessl-easyrsa.cnf -out /tmp/keys/client.crt -in /tmp/keys/client_unpass.crt -keyfile /etc/openvpn/keys/private/ca.key -cert /etc/openvpn/keys/ca.crt


Ответы (1 шт):

Автор решения: Pak Uula

Пароль к ключу передается через опцию -passin. Openssl поддерживает несколько схем передачи пароля:

  • -passin pass:Password - пароль Password задан прямо в командной строке,
  • -passin env:PSWD_VAR - пароль задан в переменной окружения PSWD_VAR
  • -passin file:/path/to/key/pwd.txt - пароль задан в файле /path/to/key/pwd.txt
  • -passin stdin - пароль читать из /dev/stdin
  • -passin fd:6 - пароль читать из файлового дескриптора 6

В вашем примере это будет так:

echo "Password" | sudo \
  openssl ca -batch -config /etc/openvpn/keys/safessl-easyrsa.cnf \
    -out /tmp/keys/client.crt -in /tmp/keys/client_unpass.crt \
    -keyfile /etc/openvpn/keys/private/ca.key -passin stdin \
    -cert /etc/openvpn/keys/ca.crt

Без echo:

sudo \
  openssl ca -batch -config /etc/openvpn/keys/safessl-easyrsa.cnf \
    -out /tmp/keys/client.crt -in /tmp/keys/client_unpass.crt \
    -keyfile /etc/openvpn/keys/private/ca.key -passin pass:Password \
    -cert /etc/openvpn/keys/ca.crt
→ Ссылка