Spec-Zone.ru › Ansible 2.10

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

Примечание

Этот плагин является частью коллекции community.crypto (версия 1.3.0).

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

Для использования в книге задач укажите: community.crypto.openssl_privatekey.

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

Обзор

  • Ключи генерируются в формате PEM.
  • Можно сгенерировать приватные ключи RSA, DSA, ECC или EdDSA.
  • Обратите внимание, что модуль пересоздаёт приватные ключи, если они не соответствуют параметрам модуля. В частности, если вы укажете другой пароль (или не укажете его), измените размер ключа и т.д., приватный ключ будет сгенерирован заново. Если вы опасаетесь, что это может перезаписать ваш приватный ключ, воспользуйтесь параметром backup.
  • Модуль может использовать библиотеку cryptography Python или pyOpenSSL Python. По умолчанию он пытается определить, какая из них доступна. Это можно переопределить с помощью параметра select_crypto_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.
Обратите внимание, что все кривые, кроме 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, ключ будет преобразован в новый формат вместо этого.
Поддерживается только бэкендом cryptography.
group
строка
Имя группы, которая должна владеть файлом/каталогом, как это передаётся команде chown.
mode
сырой
Разрешения, которые должны быть у результирующего файла или каталога.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и смог выполнить собственное преобразование из строки в число.
Если Ansible получит число без одного из этих правил, он будет интерпретировать его как десятичное число, что приведёт к неожиданным результатам.
Начиная с Ansible 1.8, режим может быть указан как символический режим (например, u+rwx или u=rw,g=r,o=r).
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
строка
    Варианты:
  • авто ←
  • 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
строка
Часть SELinux контекста файла.
По умолчанию используется политика system, где это применимо.
Если установлено значение _default, будет использоваться часть политики user, если она доступна.
size
целое число
По умолчанию:
4096
Размер (в битах) ключа TLS/SSL, который нужно сгенерировать.
состояние
строка
    Варианты:
  • отсутствует
  • присутствует ←
Указывает, должен ли существовать приватный ключ, выполняя действия, если состояние отличается от заявленного.
тип
строка
    Варианты:
  • DSA
  • ECC
  • Ed25519
  • Ed448
  • RSA ←
  • X25519
  • X448
Алгоритм, используемый для генерации приватного ключа TLS/SSL.
Обратите внимание, что ECC, X25519, X448, Ed25519 и Ed448 требуют бэкенд cryptography. X25519 требует библиотеку cryptography версии 2.5 или выше, а X448, Ed25519 и Ed448 требуют cryptography версии 2.6 или выше. Для ECC, минимальная требуемая версия cryptography зависит от параметра кривая.
unsafe_writes
булево
добавлен в 2.2 ansible.builtin
    Варианты:
  • нет ←
  • да
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто не работают так, чтобы это было возможно. Одним из примеров являются файлы, смонтированные с помощью 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
строка
изменен и если backup yes
Имя созданного файла резервной копии.

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

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

Пример:
/etc/ssl/private/ansible.com.pem
fingerprint
словарь
изменён или успешно
Отпечаток пальца открытого ключа. Отпечаток пальца будет сгенерирован для каждого 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
строка
добавлено в 1.0.0 community.crypto
если состояние present и return_content yes
Содержание приватного ключа (текущего или сгенерированного).
Будет закодировано в Base64, если ключ в сыром формате.

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

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

Пример:
RSA


Авторы

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

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

Spec-Zone.ru

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