Spec-Zone.ru › Ansible 2.10

community.crypto.openssl_privatekey_pipe – Генерация ключей OpenSSL без доступа к диску

Примечание

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

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

Для использования в плейбуке укажите: community.crypto.openssl_privatekey_pipe.

Новое в версии 1.3.0: коллекции community.crypto

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

Обзор

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

Примечание

У этого модуля есть соответствующий плагин действия.

Требования

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

  • Библиотека cryptography >= 1.2.3 (возможно, также работают более старые версии)
  • Или pyOpenSSL

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
cipher
строка
Шифр для шифрования закрытого ключа. (Допустимые значения можно найти, выполнив `openssl list -cipher-algorithms` или `openssl list-cipher-algorithms`, в зависимости от вашей версии OpenSSL.)
При использовании бэкэнда cryptography, используйте auto.
content
строка
Текущие данные закрытого ключа.
Необходимы для идемпотентности. Если не указаны, модуль всегда вернёт изменение, и все параметры, связанные с идемпотентностью, игнорируются.
content_base64
логическое
    Варианты:
  • нет ←
  • да
Установите в true, если содержимое закодировано в base64.
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, не рекомендуются для новых закрытых ключей.
format
строка
    Варианты:
  • pkcs1
  • pkcs8
  • raw
  • auto
  • auto_ignore ←
Определяет формат, в котором записывается закрытый ключ. По умолчанию для всех ключей, поддерживающих его, используется PKCS1 (традиционный формат OpenSSL). Обратите внимание, что не каждый ключ можно экспортировать в любой формат.
Значение auto выбирает формат на основе формата ключа. Значение auto_ignore делает то же самое, но для существующих файлов закрытых ключей не будет принудительно генерировать новый, если его формат не совпадает с автоматически выбранным для генерации.
Обратите внимание, что если формат существующего закрытого ключа не соответствует, ключ *перегенерируется* по умолчанию. Для изменения этого поведения используйте параметр format_mismatch.
Параметр format поддерживается только бэкэндом cryptography Бэкэнд pyopenssl вернёт ошибку, если используется значение, отличное от auto_ignore.
format_mismatch
строка
    Варианты:
  • перегенерировать ←
  • преобразовать
Определяет поведение модуля, если формат закрытого ключа не соответствует ожидаемому формату, но все остальные параметры корректны.
Если установлено regenerate (по умолчанию), генерирует новый закрытый ключ.
Если установлено convert, ключ будет преобразован в новый формат вместо этого.
Поддерживается только бэкэндом cryptography.
passphrase
строка
Пароль для закрытого ключа.
regenerate
строка
    Варианты:
  • никогда
  • ошибка
  • частичная_идемпотентность
  • полная_идемпотентность ←
  • всегда
Позволяет настроить ситуации, в которых модуль может перегенерировать закрытые ключи. Модуль всегда сгенерирует новый ключ, если целевой файл не существует.
По умолчанию ключ будет перегенерирован, если он не соответствует параметрам модуля, за исключением случаев, когда ключ не может быть прочитан или пароль не соответствует. Обратите внимание, что это поведение изменилось в Ansible 2.10. В Ansible 2.9 поведение было таким, как если бы было указано full_idempotence.
Если установлено never, модуль вернёт ошибку, если ключ не может быть прочитан или пароль не соответствует, и никогда не будет перегенерировать существующий ключ.
Если установлено fail, модуль вернёт ошибку, если ключ не соответствует параметрам модуля.
Если установлено partial_idempotence, ключ будет перегенерирован, если он не соответствует параметрам модуля. Ключ не перегенерируется, если он не может быть прочитан (повреждённый файл), защищён неизвестным паролем или если он не защищён паролем, но пароль указан.
Если установлено full_idempotence, ключ будет перегенерирован, если он не соответствует параметрам модуля. Это также происходит, если ключ не может быть прочитан (повреждённый файл), защищён неизвестным паролем или если ключ не защищён паролем, но пароль указан. Убедитесь, что у вас есть резервная копия, при использовании этого параметра!
Если установлено always, модуль всегда перегенерирует ключ. Это эквивалентно установке параметра force в yes.
Обратите внимание, что если format_mismatch установлен в convert и всё соответствует, кроме формата, ключ всегда будет преобразован, кроме случаев, когда regenerate установлен в always.
return_current_key
логическое
    Варианты:
  • нет ←
  • да
Установите в true для возвращения текущего закрытого ключа, когда модуль не сгенерировал новый.
Обратите внимание, что в режиме проверки, когда этот параметр не установлен в true, модуль всегда возвращает текущий ключ (если он был предоставлен), и Ansible заменит его на VALUE_SPECIFIED_IN_NO_LOG_PARAMETER.
select_crypto_backend
строка
    Варианты:
  • auto ←
  • cryptography
  • pyopenssl
Определяет, какой бэкэнд криптографии использовать.
По умолчанию выбрано auto, которое пытается использовать cryptography при наличии, и переходит к pyopenssl.
Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.
Если установлено cryptography, попытается использовать библиотеку cryptography.
Обратите внимание, что бэкэнд pyopenssl был устаревшим в Ansible 2.9 и будет удалён в community.crypto 2.0.0. С этого момента будет доступен только бэкэнд cryptography.
size
целое число
По умолчанию:
4096
Размер (в битах) ключа TLS/SSL для генерации.
type
строка
    Варианты:
  • 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 зависит от параметра curve.

См. также

См. также

community.crypto.openssl_privatekey

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

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_pipe:
    path: /etc/ssl/private/ansible.com.pem
  register: output
  no_log: true  # make sure that private key data is not accidentally revealed in logs!
- name: Show generated key
  debug:
    msg: "{{ output.privatekey }}"
  # DO NOT OUTPUT KEY MATERIAL TO CONSOLE OR LOGS IN PRODUCTION!

- 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.encrypt_sops:
        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
      set_fact:
        output: ''

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

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

Ключ Возвращаемое значение Описание
curve
строка
изменённое или успех, и тип является ECC
Эллиптическая кривая, используемая для генерации закрытого ключа TLS/SSL.

Пример:
secp256r1
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
строка
изменённое или return_current_key равно true
Содержимое сгенерированного закрытого ключа.
Обратите внимание, что если результат не изменён, текущий закрытый ключ будет возвращён только в том случае, если опция return_current_key установлена в true.
Будет закодирован в Base64, если ключ находится в сыром формате.

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

Пример:
4096
type
строка
изменённое или успех
Алгоритм, используемый для генерации закрытого ключа 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_pipe_module.html

Spec-Zone.ru

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