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 строка |
| Обратите внимание, что не все кривые поддерживаются всеми версиями cryptography. Для максимальной совместимости следует использовать secp384r1 или secp256r1. Мы используем имена кривых, определённые в реестре IANA для TLS. Обратите внимание, что все кривые, кроме 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 сырой | Разрешения, которые должны быть у результирующего файла или каталога. Для тех, кто привык к /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 строка |
| Определяет, какой бэкенд шифрования использовать. По умолчанию используется 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, который нужно сгенерировать. |
| состояние строка |
| Указывает, должен ли существовать приватный ключ, выполняя действия, если состояние отличается от заявленного. |
| тип строка |
| Алгоритм, используемый для генерации приватного ключа 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