community.crypto.openssl_privatekey_pipe – Генерация закрытых ключей OpenSSL без доступа к диску
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.4.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. Пожалуйста, обратите внимание, что все кривые, кроме 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–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_pipe_module.html