Модуль community.crypto.x509_certificate – Генерация и/или проверка сертификатов OpenSSL
Примечание
Этот модуль является частью коллекции community.crypto (версия 2.22.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля необходимы дополнительные требования. Подробности см. в разделе Требования.
Для использования в плейбуке укажите: community.crypto.x509_certificate.
Обзор
- Он реализует понятие провайдера (один из
selfsigned,ownca,acme, иentrustдля вашего сертификата). - Использует библиотеку cryptography Python для взаимодействия с OpenSSL.
- Обратите внимание, что этот модуль назывался
openssl_certificateпри прямом включении в Ansible до версии 2.9. При переносе в коллекциюcommunity.crypto, он был переименован в community.crypto.x509_certificate. В Ansible 2.10 и выше его по-прежнему можно использовать с старым коротким именем (или сansible.builtin.openssl_certificate), которое перенаправляет на community.crypto.x509_certificate. При использовании FQCN или ключевого слова collections следует использовать новое имя community.crypto.x509_certificate для предотвращения предупреждения о устаревании. - Пожалуйста, обратите внимание, что модуль перегенерирует существующий сертификат, если он не соответствует параметрам модуля или кажется поврежденным. Если вы обеспокоены тем, что это может перезаписать ваш существующий сертификат, рассмотрите использование параметра
backup. - Провайдер
owncaпредназначен для генерации сертификата OpenSSL, подписанного вашим собственным сертификатом CA (Certificate Authority) (самоподписанный сертификат). - Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- acme-tiny >= 4.0.0 (при использовании провайдера
acme) - cryptography >= 1.6 (при использовании провайдера
selfsignedилиownca)
Параметры
Параметр | Комментарии |
|---|---|
acme_accountkey_path path | Путь к accountkey для провайдера Используется только провайдером |
acme_chain boolean | Включить промежуточный сертификат в сгенерированный сертификат Используется только провайдером Обратите внимание, что это доступно только для более старых версий Варианты:
|
acme_challenge_path path | Путь к каталогу ACME challenge, который размещен на http://<HOST>:80/.well-known/acme-challenge/ Используется только провайдером |
acme_directory string добавлено в community.crypto 1.0.0 | Каталог ACME для использования. Вы можете использовать любой каталог, который поддерживает протокол ACME, например, Buypass или Let’s Encrypt. Let’s Encrypt рекомендует использовать свой тестовый сервер во время разработки заданий. https://letsencrypt.org/docs/staging-environment/. По умолчанию: |
attributes псевдонимы: attr string | Атрибуты, которыми должен обладать результирующий объект файловой системы. Чтобы получить поддерживаемые флаги, посмотрите страницу руководства для chattr в целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и отображаемые lsattr. Оператор |
backup boolean | Создать резервную копию файла, включая метку времени, чтобы вы могли вернуть исходный сертификат, если случайно перезаписали его новым. Варианты:
|
csr_content string добавлено в community.crypto 1.0.0 | Содержимое запроса на подпись сертификата (CSR), используемого для генерации этого сертификата. Взаимоисключающе с |
csr_path path | Путь к запросу на подпись сертификата (CSR), используемому для генерации этого сертификата. Взаимоисключающе с |
entrust_api_client_cert_key_path path | Путь к закрытому ключу клиентского сертификата, используемого для аутентификации в API Entrust Certificate Services (ECS). Используется только провайдером Требуется, если провайдер — |
entrust_api_client_cert_path path | Путь к клиентскому сертификату, используемому для аутентификации в API Entrust Certificate Services (ECS). Используется только провайдером Требуется, если провайдер — |
entrust_api_key string | Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS). Используется только провайдером Требуется, если провайдер — |
entrust_api_specification_path path | Путь к файлу спецификации, определяющему конфигурацию API Entrust Certificate Services (ECS). Вы можете использовать это, чтобы хранить локальную копию спецификации, чтобы избежать ее загрузки каждый раз при использовании модуля. Используется только провайдером По умолчанию: |
entrust_api_user string | Имя пользователя для аутентификации в API Entrust Certificate Services (ECS). Используется только провайдером Требуется, если провайдер — |
entrust_cert_type string | Укажите тип запрашиваемого сертификата. Используется только провайдером Варианты:
|
entrust_not_after string | Момент времени, после которого сертификат перестаёт быть действительным. Время может быть указано как относительное время или как абсолютная метка времени. Действительный формат абсолютного времени — Действительный формат относительного времени — Время всегда интерпретируется как UTC. Обратите внимание, что для указания даты истечения срока действия выпущенного сертификата поддерживается только дата (день, месяц, год). Полная дата и время корректируются до EST (GMT -5:00) перед выпуском, что может привести к сертификату с датой истечения срока действия на один день раньше, чем ожидалось, если используется относительное время. Минимальный срок действия сертификата составляет 90 дней, а максимальный — три года. Если это значение не указано, сертификат перестанет быть действительным через 365 дней с даты выпуска. Это используется только поставщиком Обратите внимание, что это значение не охватывается параметром Значение по умолчанию: |
entrust_requester_email string | Электронная почта запрашивающего сертификат (для целей отслеживания). Это используется только поставщиком Это обязательно, если поставщик — |
entrust_requester_name string | Имя запрашивающего сертификат (для целей отслеживания). Это используется только поставщиком Это обязательно, если поставщик — |
entrust_requester_phone string | Номер телефона запрашивающего сертификат (для целей отслеживания). Это используется только поставщиком Это обязательно, если поставщик — |
force boolean | Сгенерировать сертификат, даже если он уже существует. Варианты:
|
group string | Имя группы, которой должен принадлежать объект файловой системы, как это передаётся в chown. Если не указано, используется текущая группа текущего пользователя, если вы не являетесь root, в этом случае он может сохранить предыдущее владение. |
ignore_timestamps boolean добавлено в community.crypto 2.0.0 | Следует ли игнорировать метки времени «не ранее» и «не позже» для проверок идемпотентности. Лучше сохранить значение по умолчанию Варианты:
|
mode any | Разрешения, которые должен иметь результирующий объект файловой системы. Для тех, кто привык к /usr/bin/chmod, помните, что режимы на самом деле являются восьмеричными числами. Вы должны дать Ansible достаточно информации, чтобы правильно их разобрать. Для получения согласованных результатов заключайте восьмеричные числа в кавычки (например, Предоставление Ansible числа без соблюдения ни одного из этих правил приведёт к десятичному числу, которое будет иметь неожиданные результаты. Начиная с Ansible 1.8, режим может быть указан как символический режим (например, Если Если Указание |
ownca_content string добавлено в community.crypto 1.0.0 | Содержимое сертификата центра сертификации (CA). Это используется только поставщиком Это взаимоисключает |
ownca_create_authority_key_identifier boolean | Создать идентификатор ключа центра сертификации из сертификата CA. Если CSR предоставил идентификатор ключа центра сертификации, он игнорируется. Идентификатор ключа центра сертификации создается из идентификатора ключа субъекта сертификата CA, если он доступен. Если он недоступен, будет использоваться открытый ключ сертификата CA. Это используется только поставщиком Обратите внимание, что это поддерживается только в случае использования серверной части Варианты:
|
ownca_create_subject_key_identifier string | Создавать ли идентификатор ключа субъекта (SKI) из открытого ключа. Значение Значение Значение Это используется только поставщиком Обратите внимание, что это поддерживается только в случае использования серверной части Варианты:
|
ownca_digest string | Алгоритм дайджеста, который будет использоваться для сертификата Это используется только поставщиком Значение по умолчанию: |
ownca_not_after string | Точка во времени, до которой сертификат остаётся действительным. Время можно указать как относительно, так и как абсолютную метку времени. Время всегда интерпретируется как UTC. Допустимый формат — Если это значение не указано, сертификат будет действителен ещё 10 лет. Обратите внимание, что это значение не используется для определения, нужно ли перегенерировать существующий сертификат. Это можно изменить, задав параметр Используется только поставщиком На macOS 10.15 и более поздних версиях сертификаты сервера TLS должны иметь срок действия не более 825 дней. Подробнее см. https://support.apple.com/en-us/HT210176. Значение по умолчанию: |
ownca_not_before string | Точка во времени, с которой сертификат начинает действовать. Время можно указать как относительно, так и как абсолютную метку времени. Время всегда интерпретируется как UTC. Допустимый формат — Если это значение не указано, сертификат начинает действовать с текущего момента. Обратите внимание, что это значение не используется для определения, нужно ли перегенерировать существующий сертификат. Это можно изменить, задав параметр Используется только поставщиком Значение по умолчанию: |
ownca_path path | Полный путь к сертификату ЦС (Центра сертификации). Используется только поставщиком Взаимоисключающее с |
ownca_privatekey_content string добавлен в community.crypto 1.0.0 | Содержимое закрытого ключа ЦС (Центра сертификации) для подписи сертификата. Используется только поставщиком Взаимоисключающее с |
ownca_privatekey_passphrase string | Пароль для Используется только поставщиком |
ownca_privatekey_path path | Путь к закрытому ключу ЦС (Центра сертификации) для подписи сертификата. Используется только поставщиком Взаимоисключающее с |
ownca_version integer | Версия сертификата В настоящее время она почти всегда должна быть Используется только поставщиком Значение по умолчанию: |
owner string | Имя пользователя, который должен владеть файловым объектом (как передаётся в chown). Если не указано, используется текущий пользователь, за исключением случая работы от имени root, в котором сохраняется предыдущее владение. Числовое имя пользователя будет интерпретировано как идентификатор пользователя, а не имя пользователя. Избегайте числовых имён пользователей для предотвращения путаницы. |
path path / обязательно | Полный путь к файлу генерируемого сертификата или уже существующего файла. |
privatekey_content string добавлен в community.crypto 1.0.0 | Содержимое закрытого ключа для подписи сертификата. Взаимоисключающее с |
privatekey_passphrase string | Пароль для Требуется, если закрытый ключ защищён паролем. |
privatekey_path path | Путь к закрытому ключу для подписи сертификата. Взаимоисключающее с |
provider string | Имя поставщика для генерации/получения сертификата OpenSSL. См. примеры по эмуляции с community.crypto.x509_certificate_info, community.crypto.openssl_csr_info, community.crypto.openssl_privatekey_info и ansible.builtin.assert. Поставщик Требуется, если Варианты:
|
return_content boolean добавлен в community.crypto 1.0.0 | Если установлено значение Варианты:
|
select_crypto_backend string | Определяет, какой криптографический бэкенд использовать. По умолчанию используется Если установлено значение Варианты:
|
selevel string | Часть контекста объекта файла системы SELinux. Это атрибут MLS/MCS, иногда известный как Если установлено значение |
selfsigned_create_subject_key_identifier string | Создавать ли идентификатор ключа субъекта (SKI) из открытого ключа. Значение Значение Значение Используется только провайдером Обратите внимание, что это поддерживается только если используется бэкенд Варианты:
|
selfsigned_digest string | Алгоритм дайджеста, используемый при самоподписи сертификата. Используется только провайдером По умолчанию: |
selfsigned_not_after aliases: selfsigned_notAfter string | Момент, после которого сертификат становится недействительным. Время может быть указано как относительное время или как абсолютная метка времени. Время всегда интерпретируется как UTC. Допустимый формат Если это значение не указано, сертификат перестанет быть действительным через 10 лет. Обратите внимание, что это значение не используется для определения необходимости перегенерации существующего сертификата. Это можно изменить, установив параметр Используется только провайдером В macOS 10.15 и новее сертификаты сервера TLS должны иметь срок действия не более 825 дней. Подробнее см. https://support.apple.com/en-us/HT210176. По умолчанию: |
selfsigned_not_before aliases: selfsigned_notBefore string | Момент, с которого сертификат действителен. Время может быть указано как относительное время или как абсолютная метка времени. Время всегда интерпретируется как UTC. Допустимый формат Если это значение не указано, сертификат будет действителен с момента выполнения. Обратите внимание, что это значение не используется для определения необходимости перегенерации существующего сертификата. Это можно изменить, установив параметр Используется только провайдером По умолчанию: |
selfsigned_version integer | Версия сертификата В настоящее время почти всегда должно быть Используется только провайдером По умолчанию: |
serole string | Часть роли контекста объекта файла системы SELinux. Если установлено значение |
setype string | Часть типа контекста объекта файла системы SELinux. Если установлено значение |
seuser string | Часть пользователя контекста объекта файла системы SELinux. По умолчанию используется политика Если установлено значение |
state string | Должен ли существовать сертификат или нет, с выполнением действий, если состояние отличается от указанного. Варианты:
|
unsafe_writes boolean | Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованных чтений из целевого объекта файла системы. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых объектов файла системы, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Одним примером являются контейнеры Docker с монтированными объектами файлов, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только ненадёжным образом. Этот параметр позволяет Ansible переключаться на небезопасные методы обновления объектов файлов системы, когда атомарные операции терпят неудачу (однако, он не принуждает Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в режиме |
diff_mode | Поддержка: полная | В режиме сравнения вернёт подробности о том, что изменилось (или, возможно, требует изменения в |
safe_file_operations | Поддержка: полная | Использует строгие функции Ansible по работе с файлами для обеспечения правильных разрешений и предотвращения повреждения данных. |
Примечания
Примечание
- Все значения ASN.1 TIME должны быть указаны в формате YYYYMMDDHHMMSSZ.
- Указанная дата должна быть UTC. Минуты и секунды обязательны.
- По соображениям безопасности при использовании поставщика
ownca, НЕ следует запускать модуль community.crypto.x509_certificate на целевом компьютере, а на выделенном сервере CA. Не рекомендуется хранить закрытый ключ CA на целевом компьютере. После подписи сертификат может быть перемещён на целевой компьютер. - Для поставщика
selfsigned, поляcsr_pathиcsr_contentявляются необязательными. Если они не предоставлены, создаётся сертификат без какой-либо информации (Subject, Subject Alternative Names, Key Usage и т.д.).
См. также
См. также
- community.crypto.x509_certificate_pipe
-
Генерация и/или проверка сертификатов OpenSSL.
- community.crypto.openssl_csr
-
Генерация запроса на подпись сертификата (CSR) OpenSSL.
- community.crypto.openssl_csr_pipe
-
Генерация запроса на подпись сертификата (CSR) OpenSSL.
- community.crypto.openssl_dhparam
-
Генерация параметров Diffie-Hellman OpenSSL.
- community.crypto.openssl_pkcs12
-
Генерация архива PKCS#12 OpenSSL.
- community.crypto.openssl_privatekey
-
Генерация закрытых ключей OpenSSL.
- community.crypto.openssl_privatekey_pipe
-
Генерация закрытых ключей OpenSSL без доступа к диску.
- community.crypto.openssl_publickey
-
Генерация открытого ключа OpenSSL из закрытого ключа.
Примеры
- name: Generate a Self Signed OpenSSL certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
privatekey_path: /etc/ssl/private/ansible.com.pem
csr_path: /etc/ssl/csr/ansible.com.csr
provider: selfsigned
- name: Generate an OpenSSL certificate signed with your own CA certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
ownca_path: /etc/ssl/crt/ansible_CA.crt
ownca_privatekey_path: /etc/ssl/private/ansible_CA.pem
provider: ownca
- name: Generate a Let's Encrypt Certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey_path: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
- name: Force (re-)generate a new Let's Encrypt Certificate
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: acme
acme_accountkey_path: /etc/ssl/private/ansible.com.pem
acme_challenge_path: /etc/ssl/challenges/ansible.com/
force: true
- name: Generate an Entrust certificate via the Entrust Certificate Services (ECS) API
community.crypto.x509_certificate:
path: /etc/ssl/crt/ansible.com.crt
csr_path: /etc/ssl/csr/ansible.com.csr
provider: entrust
entrust_requester_name: Jo Doe
entrust_requester_email: jdoe@ansible.com
entrust_requester_phone: 555-555-5555
entrust_cert_type: STANDARD_SSL
entrust_api_user: apiusername
entrust_api_key: a^lv*32!cd9LnT
entrust_api_client_cert_path: /etc/ssl/entrust/ecs-client.crt
entrust_api_client_cert_key_path: /etc/ssl/entrust/ecs-key.crt
entrust_api_specification_path: /etc/ssl/entrust/api-docs/cms-api-2.1.0.yaml
# The following example shows how to emulate the behavior of the removed
# "assertonly" provider with the x509_certificate_info, openssl_csr_info,
# openssl_privatekey_info and assert modules:
- name: Get certificate information
community.crypto.x509_certificate_info:
path: /etc/ssl/crt/ansible.com.crt
# for valid_at, invalid_at and valid_in
valid_at:
one_day_ten_hours: "+1d10h"
fixed_timestamp: 20200331202428Z
ten_seconds: "+10"
register: result
- name: Get CSR information
community.crypto.openssl_csr_info:
# Verifies that the CSR signature is valid; module will fail if not
path: /etc/ssl/csr/ansible.com.csr
register: result_csr
- name: Get private key information
community.crypto.openssl_privatekey_info:
path: /etc/ssl/csr/ansible.com.key
register: result_privatekey
- name: Check conditions on certificate, CSR, and private key
ansible.builtin.assert:
that:
# When private key was specified for assertonly, this was checked:
- result.public_key == result_privatekey.public_key
# When CSR was specified for assertonly, this was checked:
- result.public_key == result_csr.public_key
- result.subject_ordered == result_csr.subject_ordered
- result.extensions_by_oid == result_csr.extensions_by_oid
# signature_algorithms check
- "result.signature_algorithm == 'sha256WithRSAEncryption' or result.signature_algorithm == 'sha512WithRSAEncryption'"
# subject and subject_strict
- "result.subject.commonName == 'ansible.com'"
- "result.subject | length == 1" # the number must be the number of entries you check for
# issuer and issuer_strict
- "result.issuer.commonName == 'ansible.com'"
- "result.issuer | length == 1" # the number must be the number of entries you check for
# has_expired
- not result.expired
# version
- result.version == 3
# key_usage and key_usage_strict
- "'Data Encipherment' in result.key_usage"
- "result.key_usage | length == 1" # the number must be the number of entries you check for
# extended_key_usage and extended_key_usage_strict
- "'DVCS' in result.extended_key_usage"
- "result.extended_key_usage | length == 1" # the number must be the number of entries you check for
# subject_alt_name and subject_alt_name_strict
- "'dns:ansible.com' in result.subject_alt_name"
- "result.subject_alt_name | length == 1" # the number must be the number of entries you check for
# not_before and not_after
- "result.not_before == '20190331202428Z'"
- "result.not_after == '20190413202428Z'"
# valid_at, invalid_at and valid_in
- "result.valid_at.one_day_ten_hours" # for valid_at
- "not result.valid_at.fixed_timestamp" # for invalid_at
- "result.valid_at.ten_seconds" # for valid_in
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
backup_file строка | Имя созданного файла резервной копии. Возвращаемое значение: changed и если Пример: |
certificate строка добавлено в community.crypto 1.0.0 | Содержимое сертификата (текущего или сгенерированного). Возвращаемое значение: если |
filename строка | Путь к сгенерированному сертификату. Возвращаемое значение: changed или success Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/crypto/x509_certificate_module.html