Spec-Zone.ru › Ansible

Модуль community.crypto.openssl_privatekey_pipe — создание закрытых ключей OpenSSL без доступа к диску

Примечание

Этот модуль входит в коллекцию community.crypto (версия 3.2.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в состав ansible-core. Чтобы проверить, установлена ли она, выполните команду ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля требуются дополнительные компоненты. Подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.crypto.openssl_privatekey_pipe.

Добавлено в community.crypto 1.3.0

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • См. также
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Ключи создаются в формате PEM.
  • Не записывайте результат работы этого модуля в журналы или консоль, поскольку он содержит данные закрытого ключа! Для надёжности используйте параметр задачи no_log.
  • Обратите внимание, что этот модуль реализован как плагин действия и всегда выполняется на контроллере.
  • Можно создавать закрытые ключи RSA, DSA, ECC или EdDSA.
  • Это позволяет читать ключи из хранилищ и записывать их в хранилища, не сохраняя промежуточные версии на диск.
  • Этот модуль позволяет создавать и повторно создавать закрытые ключи OpenSSL без доступа к диску.

Примечание

Этому модулю соответствует плагин действия.

Требования

На хосте, где выполняется этот модуль, необходимы следующие компоненты.

  • cryptography >= 3.3

Параметры

Параметр

Комментарии

cipher

string

Шифр для шифрования закрытого ключа. Используется только при наличии passphrase.

Должно быть auto.

По умолчанию: "auto"

content

string

Текущие данные закрытого ключа.

Необходимо для идемпотентности. Если параметр не указан, модуль всегда будет возвращать состояние «изменено», а все параметры, связанные с идемпотентностью, будут игнорироваться.

content_base64

boolean

Установите значение true, если содержимое закодировано в Base64.

Варианты:

  • false ← (по умолчанию)
  • true

curve

string

Обратите внимание, что не все версии cryptography поддерживают все кривые.

Для максимальной совместимости следует использовать secp384r1 или secp256r1.

Названия кривых указаны в соответствии с реестром IANA для TLS.

Обратите внимание, что все кривые, кроме secp224r1, secp256k1, secp256r1, secp384r1 и secp521r1, не рекомендуются для новых закрытых ключей.

Варианты:

  • "secp224r1"
  • "secp256k1"
  • "secp256r1"
  • "secp384r1"
  • "secp521r1"
  • "secp192r1"
  • "brainpoolP256r1"
  • "brainpoolP384r1"
  • "brainpoolP512r1"
  • "sect163k1"
  • "sect163r2"
  • "sect233k1"
  • "sect233r1"
  • "sect283k1"
  • "sect283r1"
  • "sect409k1"
  • "sect409r1"
  • "sect571k1"
  • "sect571r1"

format

string

Определяет формат записи закрытого ключа. По умолчанию для всех ключей, которые его поддерживают, используется PKCS1 (традиционный формат OpenSSL). Обратите внимание, что не каждый ключ можно экспортировать в любом формате.

Значение auto выбирает формат в зависимости от формата ключа. Значение auto_ignore действует аналогично, но для существующих файлов закрытых ключей не вызывает их повторное создание, если формат отличается от автоматически выбранного для создания.

Обратите внимание: если формат существующего закрытого ключа не совпадает, по умолчанию ключ создаётся заново. Чтобы изменить это поведение, используйте параметр format_mismatch.

Варианты:

  • "pkcs1"
  • "pkcs8"
  • "raw"
  • "auto"
  • "auto_ignore" ← (по умолчанию)

format_mismatch

string

Определяет поведение модуля, если формат закрытого ключа не соответствует ожидаемому, но все остальные параметры совпадают с ожидаемыми.

Если задано значение regenerate (по умолчанию), создаётся новый закрытый ключ.

Если задано значение convert, ключ будет преобразован в новый формат.

Варианты:

  • "regenerate" ← (по умолчанию)
  • "convert"

passphrase

string

Парольная фраза для закрытого ключа.

regenerate

string

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

По умолчанию ключ создаётся заново, если он не соответствует параметрам модуля, за исключением случаев, когда ключ не удаётся прочитать или парольная фраза не подходит. Обратите внимание: в Ansible 2.10 это поведение изменилось. В Ansible 2.9 поведение соответствовало указанному значению full_idempotence.

Если задано значение never, модуль завершится с ошибкой, если ключ не удаётся прочитать или парольная фраза не подходит, и никогда не будет повторно создавать существующий ключ.

Если задано значение fail, модуль завершится с ошибкой, если ключ не соответствует параметрам модуля.

Если задано значение partial_idempotence, ключ будет создан заново, если он не соответствует параметрам модуля. Ключ не будет создан заново, если его не удаётся прочитать (повреждённый файл), если он защищён неизвестной парольной фразой или если ключ не защищён парольной фразой, но она указана.

Если задано значение full_idempotence, ключ будет создан заново, если он не соответствует параметрам модуля. Это также произойдёт, если ключ не удаётся прочитать (повреждённый файл), если он защищён неизвестной парольной фразой или если ключ не защищён парольной фразой, но она указана. При использовании этого параметра обязательно создайте резервную копию!

Если задано значение always, модуль всегда будет создавать ключ заново.

Обратите внимание: если для format_mismatch задано значение convert и совпадают все параметры, кроме формата, ключ всегда будет преобразован, кроме случая, когда для regenerate задано значение always.

Варианты:

  • "never"
  • "fail"
  • "partial_idempotence"
  • "full_idempotence" ← (по умолчанию)
  • "always"

return_current_key

boolean

Установите значение true, чтобы возвращать текущий закрытый ключ, если модуль не создал новый.

Обратите внимание: в режиме проверки, если для этого параметра задано значение, отличное от true, модуль всегда возвращает текущий ключ (если он был передан), а Ansible заменяет его на VALUE_SPECIFIED_IN_NO_LOG_PARAMETER.

Варианты:

  • false ← (по умолчанию)
  • true

select_crypto_backend

string

Определяет используемый криптографический механизм.

По умолчанию выбрано значение auto: оно пытается использовать cryptography, если доступен.

Если задано значение cryptography, модуль попытается использовать библиотеку cryptography.

Обратите внимание: в community.crypto 3.0.0 все значения ведут себя одинаково. В более поздней версии этот параметр будет объявлен устаревшим. Рекомендуется не задавать его явно.

Варианты:

  • "auto" ← (по умолчанию)
  • "cryptography"

size

integer

Размер создаваемого ключа TLS/SSL (в битах).

По умолчанию: 4096

type

string

Алгоритм, используемый для создания закрытого ключа TLS/SSL.

Варианты:

  • "DSA"
  • "ECC"
  • "Ed25519"
  • "Ed448"
  • "RSA" ← (по умолчанию)
  • "X25519"
  • "X448"

Атрибуты

Атрибут

Поддержка

Описание

action

Поддержка: полная

Указывает, что модулю соответствует плагин действия, поэтому некоторые части параметров можно выполнить на контроллере.

async

Поддержка: нет

Это действие полностью выполняется на контроллере.

Поддерживает использование с ключевым словом async.

check_mode

Поддержка: полная

Начиная с community.crypto 3.0.0 модуль игнорирует режим проверки и всегда работает так, как если бы режим проверки был выключен.

Может выполняться в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевую систему.

diff_mode

Поддержка: полная

В режиме diff возвращает сведения об изменениях (или о возможных изменениях в check_mode).

idempotent

Поддержка: частичная

Параметр regenerate=always обычно отключает идемпотентность.

При повторном запуске с теми же аргументами вне режима проверки второй запуск сообщает, что изменений нет.

Предполагается, что система, которой управляет модуль или состояние которой он проверяет, не изменилась существенным образом.

См. также

См. также

community.crypto.openssl_privatekey

Создание закрытых ключей OpenSSL.

community.crypto.openssl_privatekey_info

Предоставление сведений о закрытых ключах OpenSSL.

community.crypto.x509_certificate

Создание и/или проверка сертификатов OpenSSL.

community.crypto.x509_certificate_pipe

Создание и/или проверка сертификатов OpenSSL.

community.crypto.openssl_csr

Создание запроса на подпись сертификата (CSR) OpenSSL.

community.crypto.openssl_csr_pipe

Создание запроса на подпись сертификата (CSR) OpenSSL.

community.crypto.openssl_dhparam

Создание параметров Диффи — Хеллмана OpenSSL.

community.crypto.openssl_pkcs12

Создание архива PKCS#12 OpenSSL.

community.crypto.openssl_publickey

Создание открытого ключа OpenSSL на основе закрытого ключа.

Примеры

---
- name: Generate an OpenSSL private key with the default values (4096 bits, RSA)
  community.crypto.openssl_privatekey_pipe:
  register: output
  no_log: true # make sure that private key data is not accidentally revealed in logs!
- name: Show generated key
  ansible.builtin.debug:
    msg: "{{ output.privatekey }}"
  # DO NOT OUTPUT KEY MATERIAL TO CONSOLE OR LOGS IN PRODUCTION!


# The following example needs CNCF SOPS (https://github.com/getsops/sops) set up and
# the community.sops collection installed. See also
# https://docs.ansible.com/ansible/latest/collections/community/sops/docsite/guide.html

- name: Generate or update a CNCF SOPS encrypted key
  block:
    - name: Update SOPS-encrypted key with the community.sops collection
      community.crypto.openssl_privatekey_pipe:
        content: "{{ lookup('community.sops.sops', 'private_key.pem.sops') }}"
        size: 2048
      register: output
      no_log: true # make sure that private key data is not accidentally revealed in logs!

    - name: Update encrypted key when openssl_privatekey_pipe reported a change
      community.sops.sops_encrypt:
        path: private_key.pem.sops
        content_text: "{{ output.privatekey }}"
      when: output is changed
  always:
    - name: Make sure that output (which contains the private key) is overwritten
      ansible.builtin.set_fact:
        output: ''

Возвращаемые значения

Общие возвращаемые значения описаны здесь. Ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

curve

string

Эллиптическая кривая, использованная для создания закрытого ключа TLS/SSL.

Возвращается: если состояние изменено или операция выполнена успешно и type имеет значение ECC

Пример: "secp256r1"

fingerprint

dictionary

Отпечаток открытого ключа. Отпечаток создаётся для каждого доступного hashlib.algorithms.

Возвращается: если состояние изменено или операция выполнена успешно

Пример: {"md5": "84:75:71:72:8d:04:b5:6c:4d:37:6d:66:83:f5:4c:29", "sha1": "51:cc:7c:68:5d:eb:41:43:88:7e:1a:ae:c7:f8:24:72:ee:71:f6:10", "sha224": "b1:19:a6:6c:14:ac:33:1d:ed:18:50:d3:06:5c:b2:32:91:f1:f1:52:8c:cb:d5:75:e9:f5:9b:46", "sha256": "41:ab:c7:cb:d5:5f:30:60:46:99:ac:d4:00:70:cf:a1:76:4f:24:5d:10:24:57:5d:51:6e:09:97:df:2f:de:c7", "sha384": "85:39:50:4e:de:d9:19:33:40:70:ae:10:ab:59:24:19:51:c3:a2:e4:0b:1c:b1:6e:dd:b3:0c:d9:9e:6a:46:af:da:18:f8:ef:ae:2e:c0:9a:75:2c:9b:b3:0f:3a:5f:3d", "sha512": "fd:ed:5e:39:48:5f:9f:fe:7f:25:06:3f:79:08:cd:ee:a5:e7:b3:3d:13:82:87:1f:84:e1:f5:c7:28:77:53:94:86:56:38:69:f0:d9:35:22:01:1e:a6:60:...:0f:9b"}

privatekey

string

Содержимое созданного закрытого ключа.

Обратите внимание: если результат не изменился, текущий закрытый ключ будет возвращён только в том случае, если для параметра return_current_key задано значение true.

Если ключ представлен в необработанном формате, он будет закодирован в Base64.

Возвращается: если состояние изменено или return_current_key имеет значение true

size

integer

Размер закрытого ключа TLS/SSL (в битах).

Возвращается: если состояние изменено или операция выполнена успешно

Пример: 4096

type

string

Алгоритм, использованный для создания закрытого ключа TLS/SSL.

Возвращается: если состояние изменено или операция выполнена успешно

Пример: "RSA"

Авторы

  • Yanis Guenane (@Spredzy)
  • Felix Fontein (@felixfontein)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь (криптография)
  • Запросить помощь (ACME)
  • Сообщить об ошибке
  • Предложить новую функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/crypto/openssl_privatekey_pipe_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API