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 строка |
| Обратите внимание, что не все кривые поддерживаются всеми версиями 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 (традиционный формат 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.Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.Если установлено cryptography, попытается использовать библиотеку cryptography.Обратите внимание, что бэкэнд pyopenssl был устаревшим в Ansible 2.9 и будет удалён в community.crypto 2.0.0. С этого момента будет доступен только бэкэнд cryptography. |
| size целое число | По умолчанию: 4096 | Размер (в битах) ключа TLS/SSL для генерации. |
| type строка |
| Алгоритм, используемый для генерации закрытого ключа 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