Spec-Zone.ru › Ansible 2.11

community.crypto.openssl_privatekey – Генерация приватных ключей OpenSSL

Примечание

Этот плагин входит в коллекцию community.crypto (версия 1.4.0).

Для его установки используйте: ansible-galaxy collection install community.crypto.

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

  • Описание
  • Требования
  • Параметры
  • См. также
  • Примеры
  • Значения возврата

Описание

  • Ключи генерируются в формате PEM.
  • Можно сгенерировать приватные ключи RSA, DSA, ECC или EdDSA.
  • Обратите внимание, что модуль перегенерирует приватные ключи, если они не соответствуют параметрам модуля. В частности, если вы укажете другой пароль (или не укажете его), измените размер ключа и т. д., приватный ключ будет перегенерирован. Если вы обеспокоены тем, что это может перезаписать ваш приватный ключ, рассмотрите использование параметра backup.
  • Модуль может использовать библиотеку cryptography или pyOpenSSL. По умолчанию он пытается определить, какая из них доступна. Это можно переопределить параметром select_crypto_backend. Обратите внимание, что backend PyOpenSSL был устаревшим в Ansible 2.9 и будет удален в community.crypto 2.0.0.
  • Этот модуль позволяет (пере)генерировать приватные ключи OpenSSL.

Требования

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

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
строка
добавлен в 2.3 ansible.builtin
Атрибуты, которые должны иметь результирующий файл или директория.
Для получения поддерживаемых флагов обратитесь к странице справки для chattr на целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и отображается командой lsattr.
Оператор = предполагается по умолчанию, в противном случае операторы + или - необходимо включить в строку.

псевдонимы: attr
backup
булево
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая отметку времени, чтобы вы могли вернуть исходный закрытый ключ, если случайно перезаписали его новым.
cipher
строка
Шифр для шифрования закрытого ключа. (Допустимые значения можно найти, выполнив команду `openssl list -cipher-algorithms` или `openssl list-cipher-algorithms`, в зависимости от версии OpenSSL.)
При использовании бэкенда cryptography, используйте auto.
curve
строка
    Варианты:
  • secp224r1
  • secp256k1
  • secp256r1
  • secp384r1
  • secp521r1
  • secp192r1
  • brainpoolP256r1
  • brainpoolP384r1
  • brainpoolP512r1
  • sect163k1
  • sect163r2
  • sect233k1
  • sect233r1
  • sect283k1
  • sect283r1
  • sect409k1
  • sect409r1
  • sect571k1
  • sect571r1
Обратите внимание, что не все кривые поддерживаются во всех версиях cryptography.
Для максимальной совместимости следует использовать secp384r1 или secp256r1.
Мы используем названия кривых, определенные в реестре IANA для TLS https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8.
Обратите внимание, что все кривые, кроме secp224r1, secp256k1, secp256r1, secp384r1 и secp521r1, не рекомендуются для новых закрытых ключей.
force
булево
    Варианты:
  • нет ←
  • да
Ключ должен быть сгенерирован заново, даже если он уже существует.
format
строка
добавлен в 1.0.0 community.crypto
    Варианты:
  • pkcs1
  • pkcs8
  • raw
  • auto
  • auto_ignore ←
Определяет, в каком формате записывается закрытый ключ. По умолчанию для всех ключей, которые его поддерживают, используется PKCS1 (традиционный формат OpenSSL). Обратите внимание, что не каждый ключ можно экспортировать в любом формате.
Значение auto выбирает формат на основе формата ключа. Значение auto_ignore делает то же самое, но для существующих файлов закрытых ключей, оно не будет принудительно генерировать заново, когда его формат не совпадает с автоматически выбранным для генерации.
Обратите внимание, что если формат существующего закрытого ключа не совпадает, ключ по умолчанию *перегенерируется*. Чтобы изменить это поведение, используйте параметр format_mismatch.
Параметр format поддерживается только бэкендом cryptography. Бэкенд pyopenssl завершится с ошибкой, если используется значение, отличное от auto_ignore.
format_mismatch
строка
добавлен в 1.0.0 community.crypto
    Варианты:
  • regenerate ←
  • convert
Определяет поведение модуля, если формат закрытого ключа не соответствует ожидаемому формату, но все остальные параметры соответствуют.
Если установлено regenerate (по умолчанию), генерируется новый закрытый ключ.
Если установлено convert, ключ будет преобразован в новый формат вместо этого.
Поддерживается только бэкендом cryptography.
group
строка
Имя группы, которая должна владеть файлом/директорией, как если бы это было передано в команду chown.
mode
raw
Разрешения, которые должны иметь результирующий файл или директория.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы парсер Ansible YAML понимал, что это восьмеричное число (например, 0644 или 01777) либо заключить его в кавычки (например, '644' или '1777') чтобы Ansible получил строку и смог выполнить собственное преобразование из строки в число.
Передача Ansible числа без соблюдения этих правил приведет к десятичному числу, что приведет к непредсказуемым результатам.
Начиная с Ansible 1.8, режим можно указать в символьном формате (например, u+rwx или u=rw,g=r,o=r).
Если mode не указано и целевой файл не существует, по умолчанию будет использовано значение umask на системе при установке режима для вновь созданного файла.
Если mode не указано и целевой файл существует, будет использован режим существующего файла.
Указание mode — лучший способ гарантировать создание файлов с правильными разрешениями. Смотрите CVE-2020-1736 для получения дополнительной информации.
owner
строка
Имя пользователя, который должен владеть файлом/директорией, как если бы это было передано в команду chown.
passphrase
строка
Пароль для закрытого ключа.
path
путь / обязательный
Имя файла, в который будет записан сгенерированный закрытый ключ TLS/SSL. Он будет иметь режим 0600, если mode не указан явно.
regenerate
строка
добавлен в 1.0.0 community.crypto
    Варианты:
  • никогда
  • ошибка
  • частичная_идемпотентность
  • полная_идемпотентность ←
  • всегда
Позволяет настроить ситуации, в которых модуль разрешено перегенерировать закрытые ключи. Модуль всегда сгенерирует новый ключ, если целевой файл не существует.
По умолчанию, ключ будет перегенерирован, если он не соответствует параметрам модуля, за исключением случаев, когда ключ не может быть прочитан или пароль не совпадает. Обратите внимание, что это изменилось для Ansible 2.10. Для Ansible 2.9 поведение было как если бы full_idempotence был указан.
Если установлено never, модуль завершится ошибкой, если ключ не может быть прочитан или пароль не совпадает, и никогда не будет перегенерировать существующий ключ.
Если установлено fail, модуль завершится ошибкой, если ключ не соответствует параметрам модуля.
Если установлено partial_idempotence, ключ будет перегенерирован, если он не соответствует параметрам модуля. Ключ не перегенерируется, если он не может быть прочитан (поврежденный файл), ключ защищен неизвестным паролем или если ключ не защищен паролем, но пароль указан.
Если установлено full_idempotence, ключ будет перегенерирован, если он не соответствует параметрам модуля. Это также относится к случаям, когда ключ не может быть прочитан (поврежденный файл), ключ защищен неизвестным паролем или если ключ не защищен паролем, но пароль указан. Убедитесь, что у вас есть резервная копия при использовании этого параметра!
Если установлено always, модуль всегда перегенерирует ключ. Это эквивалентно установке force в yes.
Обратите внимание, что если format_mismatch установлено в convert и все соответствует, кроме формата, ключ всегда будет преобразован, если regenerate не установлено в always.
return_content
булево
добавлен в 1.0.0 community.crypto
    Варианты:
  • нет ←
  • да
Если установлено yes, вернет содержимое закрытого ключа (текущего или сгенерированного) как privatekey.
Обратите внимание, что, особенно если закрытый ключ не зашифрован, необходимо убедиться, что возвращаемое значение обработано должным образом и случайно не записывается в журналы и т. д.! Используйте с осторожностью!
Используйте опцию задачи Ansible no_log, чтобы избежать отображения вывода. См. также https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-keep-secret-data-in-my-playbook.
select_crypto_backend
строка
    Варианты:
  • auto ←
  • cryptography
  • pyopenssl
Определяет, какой бэкенд криптографии использовать.
По умолчанию выбран auto, который пытается использовать cryptography, если он доступен, и в противном случае использует pyopenssl.
Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.
Если установлено cryptography, попытается использовать библиотеку cryptography.
Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. С этого момента доступен только бэкенд cryptography.
selevel
строка
Часть SELinux контекста файла — уровень.
Это атрибут MLS/MCS, иногда известный как range.
При установке _default, будет использоваться часть политики level, если она доступна.
serole
строка
Часть SELinux контекста файла — роль.
При установке _default, будет использоваться часть политики role, если она доступна.
setype
строка
Часть SELinux контекста файла — тип.
При установке _default, будет использоваться часть политики type, если она доступна.
seuser
string
Часть контекста файла SELinux, относящаяся к пользователю.
По умолчанию используется политика system, если применимо.
При установке в значение _default, будет использоваться раздел политики user, если он доступен.
size
integer
По умолчанию:
4096
Размер (в битах) ключа TLS/SSL для генерации.
state
string
    Варианты:
  • absent
  • present ←
Нужно ли создавать закрытый ключ или нет, выполняя действия, если состояние отличается от указанного.
type
string
    Варианты:
  • DSA
  • ECC
  • Ed25519
  • Ed448
  • RSA ←
  • X25519
  • X448
Алгоритм, используемый для генерации закрытого ключа TLS/SSL.
Обратите внимание, что ECC, X25519, X448, Ed25519 и Ed448 требуют бэкенд cryptography. X25519 нуждается в криптографии версии 2.5 или выше, в то время как X448, Ed25519 и Ed448 требуют криптографии версии 2.6 или выше. Для ECC, минимальная версия криптографии зависит от параметра curve.
unsafe_writes
boolean
добавлен в 2.2 ansible.builtin
    Варианты:
  • no ←
  • yes
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованного чтения из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это предотвращает это. Одним примером являются файлы, смонтированные с помощью docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только ненадёжным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов при сбое атомарных операций (однако это не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены проблемам гонок и могут привести к повреждению данных.

См. также

См. также

community.crypto.openssl_privatekey_pipe

Официальная документация модуля community.crypto.openssl_privatekey_pipe.

community.crypto.openssl_privatekey_info

Официальная документация модуля community.crypto.openssl_privatekey_info.

community.crypto.x509_certificate

Официальная документация модуля community.crypto.x509_certificate.

community.crypto.x509_certificate_pipe

Официальная документация модуля community.crypto.x509_certificate_pipe.

community.crypto.openssl_csr

Официальная документация модуля community.crypto.openssl_csr.

community.crypto.openssl_csr_pipe

Официальная документация модуля community.crypto.openssl_csr_pipe.

community.crypto.openssl_dhparam

Официальная документация модуля community.crypto.openssl_dhparam.

community.crypto.openssl_pkcs12

Официальная документация модуля community.crypto.openssl_pkcs12.

community.crypto.openssl_publickey

Официальная документация модуля community.crypto.openssl_publickey.

Примеры

- 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: aes256

- 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: yes

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

Значения возврата

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

Ключ Возвращённое значение Описание
backup_file
string
изменён и если backup — yes
Имя созданного файла резервной копии.

Пример:
/path/to/privatekey.pem.2019-03-09@11:22~
curve
string
изменён или успех, и type — ECC
Эллиптическая кривая, используемая для генерации закрытого ключа TLS/SSL.

Пример:
secp256r1
filename
string
изменён или успех
Путь к сгенерированному файлу закрытого ключа TLS/SSL.

Пример:
/etc/ssl/private/ansible.com.pem
fingerprint
dictionary
изменён или успех
Отпечаток пальца открытого ключа. Отпечаток пальца будет сгенерирован для каждого hashlib.algorithms доступного.
Бэкенд PyOpenSSL требует PyOpenSSL >= 16.0 для осмысленного вывода.

Пример:
{'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
добавлено в 1.0.0 community.crypto
если state — present и return_content — yes
Содержимое (текущего или сгенерированного) закрытого ключа.
Будет закодировано в Base64, если ключ в сыром формате.

size
integer
изменён или успех
Размер (в битах) закрытого ключа TLS/SSL.

Пример:
4096
type
string
изменён или успех
Используемый алгоритм для генерации закрытого ключа TLS/SSL.

Пример:
RSA


Авторы

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

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

Spec-Zone.ru

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