Spec-Zone.ru › Ansible

Модуль community.crypto.openssl_privatekey — Генерация ключей OpenSSL

Примечание

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

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

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

Чтобы использовать его в playbook, укажите: community.crypto.openssl_privatekey.

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

Обзор

  • Ключи генерируются в формате PEM.
  • Можно сгенерировать ключи RSA, DSA, ECC или EdDSA.
  • Обратите внимание, что модуль перегенерирует закрытый ключ, если он не соответствует параметрам модуля. В частности, если вы укажете другой пароль (или не укажете его), измените размер ключа и т. д., закрытый ключ будет перегенерирован. Если вы опасаетесь, что это может перезаписать ваш закрытый ключ, рассмотрите использование опции backup.
  • По умолчанию режим файла закрытого ключа будет 0600, если mode не задан явно.
  • Этот модуль позволяет (пере)генерировать закрытые ключи OpenSSL.

Требования

Ниже перечислены требования, необходимые на хосте, который выполняет этот модуль.

  • cryptography >= 1.2.3 (могут работать и более старые версии)

Параметры

Параметр

Комментарии

attributes

aliases: attr

string

Атрибуты, которыми должен обладать результирующий объект файловой системы.

Чтобы получить поддерживаемые флаги, посмотрите страницу руководства для chattr в целевой системе.

Эта строка должна содержать атрибуты в том же порядке, что и отображаемые lsattr.

Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.

backup

boolean

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

Варианты:

  • false ← (default)
  • true

cipher

string

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

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

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

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"

force

boolean

Следует ли перегенерировать ключ, даже если он уже существует.

Варианты:

  • false ← (default)
  • true

format

string

добавлено в community.crypto 1.0.0

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

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

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

Варианты:

  • "pkcs1"
  • "pkcs8"
  • "raw"
  • "auto"
  • "auto_ignore" ← (default)

format_mismatch

string

добавлено в community.crypto 1.0.0

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

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

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

Поддерживается только серверной частью cryptography.

Варианты:

  • "regenerate" ← (default)
  • "convert"

group

string

Имя группы, которой должен принадлежать объект файловой системы, как это передается в chown.

Если не указано, используется текущая группа текущего пользователя, если вы не являетесь root, в этом случае он может сохранить предыдущее владение.

mode

any

Разрешения, которыми должен обладать результирующий объект файловой системы.

Для тех, кто привык к /usr/bin/chmod, помните, что режимы на самом деле являются восьмеричными числами. Вы должны предоставить Ansible достаточно информации, чтобы правильно их разобрать. Для согласованных результатов заключайте восьмеричные числа в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число. Добавление ведущего нуля (например, 0755) иногда работает, но может давать сбои в циклах и некоторых других обстоятельствах.

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

Начиная с Ansible 1.8, режим может быть указан как символьный режим (например, u+rwx или u=rw,g=r,o=r).

Если mode не указан, и целевой объект файловой системы не существует, то при установке режима для вновь созданного объекта файловой системы будет использоваться значение umask по умолчанию в системе.

Если mode не указан, и целевой объект файловой системы существует, будет использоваться режим существующего объекта файловой системы.

Указание mode — лучший способ обеспечить создание объектов файловой системы с правильными разрешениями. См. CVE-2020-1736 для получения дополнительной информации.

owner

string

Имя пользователя, которому должен принадлежать объект файловой системы, как это передается в chown.

Если не указано, используется текущий пользователь, если вы не являетесь root, в этом случае он может сохранить предыдущее владение.

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

passphrase

string

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

path

path / required

Имя файла, в который будет записан сгенерированный закрытый ключ TLS/SSL. Он будет иметь режим 0600, если mode не установлен явно.

regenerate

string

added in community.crypto 1.0.0

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

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

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

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

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

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

Если установлено значение always, модуль всегда будет перегенерировать ключ. Это эквивалентно установке force в true.

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

Варианты:

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

return_content

boolean

added in community.crypto 1.0.0

Если установлено значение true, вернет содержимое (текущего или сгенерированного) закрытого ключа как privatekey.

Обратите внимание, что особенно если закрытый ключ не зашифрован, вы должны убедиться, что возвращаемое значение обрабатывается должным образом и случайно не записывается в журналы и т. д.! Используйте с осторожностью!

Используйте параметр задачи Ansible no_log чтобы избежать отображения вывода. См. также https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-keep-secret-data-in-my-playbook.

Варианты:

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

select_crypto_backend

string

Определяет, какой криптографический бэкэнд использовать.

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

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

Варианты:

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

selevel

string

Часть уровня контекста объекта файловой системы SELinux.

Это атрибут MLS/MCS, иногда называемый range.

Когда установлено значение _default, он будет использовать часть level политики, если доступно.

serole

string

Часть роли контекста объекта файловой системы SELinux.

Когда установлено значение _default, он будет использовать часть role политики, если доступно.

setype

string

Часть типа контекста объекта файловой системы SELinux.

Когда установлено значение _default, он будет использовать часть type политики, если доступно.

seuser

string

Часть пользователя контекста объекта файловой системы SELinux.

По умолчанию используется политика system, если применимо.

Когда установлено значение _default, он будет использовать часть user политики, если доступно.

size

integer

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

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

state

string

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

Варианты:

  • "absent"
  • "present" ← (по умолчанию)

type

string

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

Обратите внимание, что ECC, X25519, X448, Ed25519 и Ed448 требуют бэкэнда cryptography. X25519 требует cryptography 2.5 или новее, а X448, Ed25519 и Ed448 требуют cryptography 2.6 или новее. Для ECC, минимальная требуемая версия cryptography зависит от параметра curve.

Варианты:

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

unsafe_writes

boolean

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

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

Этот параметр позволяет Ansible вернуться к небезопасным методам обновления объектов файловой системы, когда атомарные операции завершаются ошибкой (однако это не заставляет Ansible выполнять небезопасные записи).

ВАЖНО! Небезопасные записи подвержены условиям гонки и могут привести к повреждению данных.

Варианты:

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

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

Может работать в check_mode и возвращать прогноз о внесённых изменениях без модификации целевого объекта.

diff_mode

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

В режиме diff вернёт подробности о том, что изменилось (или, возможно, что необходимо изменить в check_mode).

safe_file_operations

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

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

См. также

См. также

community.crypto.openssl_privatekey_pipe

Генерировать ключи 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

Генерировать параметры Diffie-Hellman OpenSSL.

community.crypto.openssl_pkcs12

Генерировать архив OpenSSL PKCS#12.

community.crypto.openssl_publickey

Генерировать открытый ключ OpenSSL из закрытого ключа.

Примеры

- name: Generate an OpenSSL private key with the default values (4096 bits, RSA)
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem

- name: Generate an OpenSSL private key with the default values (4096 bits, RSA) and a passphrase
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem
    passphrase: ansible
    cipher: auto

- name: Generate an OpenSSL private key with a different size (2048 bits)
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem
    size: 2048

- name: Force regenerate an OpenSSL private key if it already exists
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem
    force: true

- name: Generate an OpenSSL private key with a different algorithm (DSA)
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem
    type: DSA

- name: Generate an OpenSSL private key with elliptic curve cryptography (ECC)
  community.crypto.openssl_privatekey:
    path: /etc/ssl/private/ansible.com.pem
    type: ECC
    curve: secp256r1

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

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

Ключ

Описание

backup_file

строка

Имя созданного файла резервной копии.

Возвращается: changed и если backup равно true

Пример: "/path/to/privatekey.pem.2019-03-09@11:22~"

curve

строка

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

Возвращается: changed или success, и type равно ECC

Пример: "secp256r1"

filename

строка

Путь к сгенерированному файлу закрытого ключа TLS/SSL.

Возвращается: changed или success

Пример: "/etc/ssl/private/ansible.com.pem"

fingerprint

словарь

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

Возвращается: changed или success

Пример: {"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

строка

добавлен в community.crypto 1.0.0

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

Будет закодирован в Base64, если ключ находится в сыром формате.

Возвращается: если state равно present и return_content равно true

size

целое число

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

Возвращается: changed или success

Пример: 4096

type

строка

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

Возвращается: changed или success

Пример: "RSA"

Авторы

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

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

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

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

Spec-Zone.ru

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