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 строка |
| Обратите внимание, что не все кривые поддерживаются во всех версиях 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 (традиционный формат OpenSSL). Обратите внимание, что не каждый ключ можно экспортировать в любом формате. Значение auto выбирает формат на основе формата ключа. Значение auto_ignore делает то же самое, но для существующих файлов закрытых ключей, оно не будет принудительно генерировать заново, когда его формат не совпадает с автоматически выбранным для генерации.Обратите внимание, что если формат существующего закрытого ключа не совпадает, ключ по умолчанию *перегенерируется*. Чтобы изменить это поведение, используйте параметр format_mismatch. Параметр format поддерживается только бэкендом cryptography. Бэкенд pyopenssl завершится с ошибкой, если используется значение, отличное от auto_ignore. |
| format_mismatch строка добавлен в 1.0.0 community.crypto |
| Определяет поведение модуля, если формат закрытого ключа не соответствует ожидаемому формату, но все остальные параметры соответствуют. Если установлено 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. Если установлено 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 |
| Нужно ли создавать закрытый ключ или нет, выполняя действия, если состояние отличается от указанного. |
| type string |
| Алгоритм, используемый для генерации закрытого ключа 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 |
| Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это предотвращает это. Одним примером являются файлы, смонтированные с помощью 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