Spec-Zone.ru › Ansible 2.11

community.crypto.x509_certificate – Генерация и/или проверка сертификатов OpenSSL

Примечание

Этот плагин входит в состав коллекции community.crypto (версия 1.4.0).

Для его установки используйте: ansible-galaxy collection install community.crypto.

Для использования в книге задач укажите: community.crypto.x509_certificate.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Описание

  • Если доступны библиотеки cryptography и PyOpenSSL (и удовлетворяют минимальным требованиям к версии), cryptography будет предпочтительнее в качестве бэкенда по сравнению с PyOpenSSL (если бэкенд не принудительно установлен с помощью select_crypto_backend). Обратите внимание, что бэкенд PyOpenSSL был устаревшим в Ansible 2.9 и будет удалён в версии community.crypto 2.0.0.
  • Он реализует понятие поставщика (например, selfsigned, ownca, acme, assertonly, entrust ) для вашего сертификата.
  • Он использует библиотеки pyOpenSSL или cryptography для взаимодействия с OpenSSL.
  • Многие свойства, которые можно указать в этом модуле, предназначены для проверки существующего или недавно сгенерированного сертификата. Правильное место для их указания, если вы хотите получить сертификат с этими свойствами, — это CSR (запрос на подписание сертификата).
  • Обратите внимание, что этот модуль назывался openssl_certificate при прямом включении в Ansible до версии 2.9. При перемещении в коллекцию community.crypto, он был переименован в community.crypto.x509_certificate. С Ansible 2.10 он по-прежнему может использоваться с предыдущим коротким именем (или с помощью ansible.builtin.openssl_certificate), которое перенаправляет на community.crypto.x509_certificate. При использовании полных имён классов или ключевого слова collections следует использовать новое имя community.crypto.x509_certificate, чтобы избежать предупреждений об устаревании.
  • Обратите внимание, что модуль перегенерирует существующий сертификат, если он не соответствует параметрам модуля или если он, по-видимому, повреждён. Если вы обеспокоены тем, что это может перезаписать ваш существующий сертификат, рассмотрите использование параметра backup.
  • Поставщик assertonly предназначен для случаев, когда вас интересуют только свойства предоставленного сертификата. Обратите внимание, что этот поставщик устарел в Ansible 2.9 и будет удалён в community.crypto 2.0.0. См. примеры того, как эмулировать использование assertonly с помощью community.crypto.x509_certificate_info, community.crypto.openssl_csr_info, community.crypto.openssl_privatekey_info и ansible.builtin.assert. Это также позволяет выполнять более гибкую проверку, чем та, которая предлагается поставщиком assertonly.
  • Поставщик ownca предназначен для генерации сертификата OpenSSL, подписанного с помощью собственного сертификата CA (Certificate Authority) (самозаверяющегося сертификата).
  • Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.

Требования

Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.

  • PyOpenSSL >= 0.15 или cryptography >= 1.6 (если используется selfsigned, ownca или assertonly поставщик)
  • acme-tiny >= 4.0.0 (если используется поставщик acme)

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
acme_accountkey_path
путь
Путь к ключу учетной записи (accountkey) для поставщика acme.
Используется только поставщиком acme.
acme_chain
логическое значение
    Варианты:
  • нет ←
  • да
Включить промежуточный сертификат в сгенерированный сертификат.
Используется только поставщиком acme.
Обратите внимание, что это доступно только для старых версий acme-tiny. Новые версии автоматически включают цепочку, и установка acme_chain в значение yes приводит к ошибке.
acme_challenge_path
путь
Путь к каталогу вызовов ACME, который обслуживается по адресу http://<HOST>:80/.well-known/acme-challenge/
Используется только поставщиком acme.
acme_directory
строка
добавлен в 1.0.0 community.crypto
Значение по умолчанию:
"https://acme-v02.api.letsencrypt.org/directory"
Используемый каталог ACME. Можно использовать любой каталог, поддерживающий протокол ACME, например, Buypass или Let's Encrypt.
Let's Encrypt рекомендует использовать их тестовый сервер при разработке задач. https://letsencrypt.org/docs/staging-environment/.
attributes
строка
добавлен в 2.3 ansible.builtin
Атрибуты, которые должны иметь результирующий файл или каталог.
Список поддерживаемых флагов можно найти в мануале к команде chattr на целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и при отображении командой lsattr.
Оператор = используется по умолчанию, в противном случае необходимо включить операторы + или - в строку.

псевдонимы: attr
backup
логическое значение
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая отметку времени, чтобы можно было восстановить исходный сертификат в случае случайной перезаписи новым.
Не используется поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.
csr_content
строка
добавлен в 1.0.0 community.crypto
Содержимое запроса на подпись сертификата (CSR), используемого для генерации сертификата.
Взаимоисключающее с csr_path.
csr_path
путь
Путь к запросу на подпись сертификата (CSR), используемому для генерации сертификата.
Взаимоисключающее с csr_content.
entrust_api_client_cert_key_path
путь
Путь к закрытому ключу клиентского сертификата, используемого для аутентификации в API Entrust Certificate Services (ECS).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_api_client_cert_path
путь
Путь к клиентскому сертификату, используемому для аутентификации в API Entrust Certificate Services (ECS).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_api_key
строка
Ключ (пароль) для аутентификации в API Entrust Certificate Services (ECS).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_api_specification_path
путь
Значение по умолчанию:
"https://cloud.entrust.net/EntrustCloud/documentation/cms-api-2.1.0.yaml"
Путь к файлу спецификаций, определяющему конфигурацию API Entrust Certificate Services (ECS).
Можно использовать для хранения локальной копии спецификаций, чтобы избежать ее загрузки каждый раз при использовании модуля.
Используется только поставщиком entrust.
entrust_api_user
строка
Имя пользователя для аутентификации в API Entrust Certificate Services (ECS).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_cert_type
строка
    Варианты:
  • STANDARD_SSL ←
  • ADVANTAGE_SSL
  • UC_SSL
  • EV_SSL
  • WILDCARD_SSL
  • PRIVATE_SSL
  • PD_SSL
  • CDS_ENT_LITE
  • CDS_ENT_PRO
  • SMIME_ENT
Укажите тип запрашиваемого сертификата.
Используется только поставщиком entrust.
entrust_not_after
строка
Значение по умолчанию:
"+365d"
Точка времени, до которой сертификат будет действительным.
Время может быть указано как относительное время или как абсолютная метка времени.
Формат абсолютного времени: ASN.1 TIME, например, 2019-06-18.
Формат относительного времени: [+-]timespec, где timespec может быть целым числом + [w | d | h | m | s], например, +365d или +32w1d2h.
Время всегда интерпретируется как UTC.
Обратите внимание, что поддерживается только дата (день, месяц, год) для указания даты окончания выпущенного сертификата.
Полная дата и время корректируются к EST (GMT -5:00) перед выпуском, что может привести к сертификату с датой окончания на один день раньше, чем ожидалось, если используется относительное время.
Минимальный срок действия сертификата — 90 дней, максимальный — три года.
Если значение не указано, сертификат перестанет быть действительным через 365 дней с даты выдачи.
Используется только поставщиком entrust.
entrust_requester_email
строка
Электронный адрес заявителя сертификата (для отслеживания).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_requester_name
строка
Имя заявителя сертификата (для отслеживания).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
entrust_requester_phone
строка
Номер телефона заявителя сертификата (для отслеживания).
Используется только поставщиком entrust.
Требуется, если поставщик entrust.
extended_key_usage
список / элементы=строка
Поле расширенного использования ключа (extended_key_usage) должно содержать все эти значения.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.

псевдонимы: extendedKeyUsage
extended_key_usage_strict
логическое значение
    Варианты:
  • нет ←
  • да
Если установлено в yes, поле расширенного использования ключа (extended_key_usage) должно содержать только эти значения.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.

псевдонимы: extendedKeyUsage_strict
force
логическое значение
    Варианты:
  • нет ←
  • да
Сгенерировать сертификат, даже если он уже существует.
group
строка
Имя группы, которая должна владеть файлом/каталогом, как если бы это передавалось в команду chown.
has_expired
логическое значение
    Варианты:
  • нет ←
  • да
Проверяет, истек ли сертификат/действителен ли он на момент выполнения модуля.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.
invalid_at
строка
Сертификат должен быть недействительным в этот момент времени.
Отметка времени отформатирована как ASN.1 TIME.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.
issuer
словарь
Пары ключ-значение, которые должны присутствовать в поле имени издателя сертификата.
Если вам нужно указать более одного значения с одинаковым ключом, используйте список в качестве значения.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример по замене assertonly.
issuer_strict
boolean
    Choices:
  • нет ←
  • да
Если установлено в yes, поле issuer должно содержать только эти значения.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly.
key_usage
list / elements=string
Расширенное поле key_usage должно содержать все эти значения.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly.

Псевдонимы: keyUsage
key_usage_strict
boolean
    Choices:
  • нет ←
  • да
Если установлено в yes, расширенное поле key_usage должно содержать только эти значения.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly.

Псевдонимы: keyUsage_strict
mode
raw
Права доступа, которые должен иметь полученный файл или директория.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы парсер YAML Ansible знал, что это восьмеричное число (как 0644 или 01777) или заключить его в кавычки (как '644' или '1777'), чтобы Ansible получил строку и смог выполнить преобразование из строки в число.
Предоставление Ansible числа без выполнения одного из этих правил приведет к десятичному числу, что даст непредсказуемые результаты.
Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
Если mode не указан, и целевой файл не существует, по умолчанию umask на системе будет использоваться при установке режима для вновь созданного файла.
Если mode не указан, и целевой файл существует, будет использован режим существующего файла.
Указание mode является лучшим способом гарантировать, что файлы создаются с правильными правами. См. CVE-2020-1736 для получения дополнительной информации.
not_after
string
Сертификат должен истечь в этот момент времени.
Отметка времени отформатирована как ASN.1 TIME.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly.

Псевдонимы: notAfter
not_before
string
Сертификат должен начать действовать в этот момент времени.
Отметка времени отформатирована как ASN.1 TIME.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удален с поставщиком assertonly в модуле community.crypto 2.0.0. Для альтернатив, см. пример замены assertonly.

Псевдонимы: notBefore
ownca_content
string
добавлен в 1.0.0 community.crypto
Содержание сертификата CA (Центр сертификации).
Это используется только поставщиком ownca.
Это взаимно исключает ownca_path.
ownca_create_authority_key_identifier
boolean
    Choices:
  • нет
  • да ←
Создать идентификатор ключа CA из сертификата CA. Если в CSR был предоставлен идентификатор ключа CA, он игнорируется.
Идентификатор ключа CA генерируется из идентификатора ключа субъекта сертификата CA, если он доступен. Если он недоступен, будет использован открытый ключ сертификата CA.
Это используется только поставщиком ownca.
Обратите внимание, что это поддерживается только при использовании бэкенда cryptography.
ownca_create_subject_key_identifier
string
    Choices:
  • create_if_not_provided ←
  • always_create
  • never_create
Нужно ли создавать идентификатор ключа субъекта (SKI) из открытого ключа.
Значение create_if_not_provided (по умолчанию) создает SKI только тогда, когда CSR его не предоставляет.
Значение always_create всегда создает SKI. Если CSR предоставляет его, он игнорируется.
Значение never_create никогда не создает SKI. Если CSR предоставляет его, он используется.
Это используется только поставщиком ownca.
Обратите внимание, что это поддерживается только при использовании бэкенда cryptography.
ownca_digest
string
Значение по умолчанию:
"sha256"
Алгоритм дайджеста, который будет использован для сертификата ownca.
Это используется только поставщиком ownca.
ownca_not_after
string
Значение по умолчанию:
"+3650d"
Точка времени, до которой сертификат остается действительным.
Время может быть указано либо как относительное время, либо как абсолютная отметка времени.
Время всегда интерпретируется как UTC.
Допустимый формат - [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат перестанет быть действительным через 10 лет.
Это используется только поставщиком ownca.
На macOS 10.15 и новее, сертификаты TLS сервера должны иметь срок действия не более 825 дней. Подробнее см. https://support.apple.com/en-us/HT210176.
ownca_not_before
string
Значение по умолчанию:
"+0s"
Точка времени, с которой сертификат действителен.
Время может быть указано либо как относительное время, либо как абсолютная отметка времени.
Время всегда интерпретируется как UTC.
Допустимый формат - [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат начнет действовать с текущего момента.
Это используется только поставщиком ownca.
ownca_path
path
Полный удаленный путь к сертификату CA (Центр сертификации).
Это используется только поставщиком ownca.
Это взаимно исключает ownca_content.
ownca_privatekey_content
string
добавлен в 1.0.0 community.crypto
Содержание закрытого ключа CA (Центр сертификации), используемого при подписании сертификата.
Это используется только поставщиком ownca.
Это взаимно исключает ownca_privatekey_path.
ownca_privatekey_passphrase
string
Пароль для ownca_privatekey_path или ownca_privatekey_content.
Это используется только поставщиком ownca.
ownca_privatekey_path
path
Путь к закрытому ключу CA (Центр сертификации), используемому при подписании сертификата.
Это используется только поставщиком ownca.
Это взаимно исключает ownca_privatekey_content.
ownca_version
integer
Значение по умолчанию:
3
Версия сертификата ownca.
В наши дни это должно быть почти всегда 3.
Это используется только поставщиком ownca.
owner
string
Имя пользователя, который должен владеть файлом/директорией, как если бы оно было передано в chown.
path
path / required
Полный удаленный путь, где должен быть создан или находится сгенерированный сертификат.
privatekey_content
string
добавлен в 1.0.0 community.crypto
Путь к закрытому ключу, используемому для подписания сертификата.
Это взаимно исключает privatekey_path.
privatekey_passphrase
string
Пароль для privatekey_path или privatekey_content.
Требуется, если закрытый ключ защищен паролем.
privatekey_path
path
Путь к закрытому ключу, используемому для подписания сертификата.
Это взаимно исключает privatekey_content.
provider
string
    Выбираемые значения:
  • acme
  • assertonly
  • entrust
  • ownca
  • selfsigned
Имя поставщика для использования при генерации/получении сертификата OpenSSL.
Поставщик assertonly не будет генерировать файлы и завершится с ошибкой, если файл сертификата отсутствует.
Поставщик assertonly устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. Пожалуйста, обратитесь к примерам о том, как его эмулировать с помощью community.crypto.x509_certificate_info, community.crypto.openssl_csr_info, community.crypto.openssl_privatekey_info и ansible.builtin.assert.
Поставщик entrust был добавлен для Ansible 2.9 и требует учетных данных для API Entrust Certificate Services (ECS).
Требуется, если state равен present.
return_content
boolean
добавлен в 1.0.0 community.crypto
    Выбираемые значения:
  • нет ←
  • да
Если установлено yes, вернет содержимое (текущего или сгенерированного) сертификата в качестве certificate.
select_crypto_backend
string
    Выбираемые значения:
  • авто ←
  • cryptography
  • pyopenssl
Определяет, какой криптографический бэкенд использовать.
По умолчанию выбрано auto, которое пытается использовать cryptography, если доступно, и переходит к pyopenssl.
Если установлено pyopenssl, попытается использовать библиотеку pyOpenSSL.
Если установлено cryptography, попытается использовать библиотеку cryptography.
Обратите внимание, что бэкенд pyopenssl устарел в Ansible 2.9 и будет удален в community.crypto 2.0.0. Начиная с этого момента, будет доступен только бэкенд cryptography.
selevel
string
Часть контекста файла SELinux, относящаяся к уровню.
Это атрибут MLS/MCS, иногда известный как range.
Если установлено _default, будет использоваться часть политики level, если она доступна.
selfsigned_create_subject_key_identifier
string
    Выбираемые значения:
  • создать, если не указано ←
  • всегда_создавать
  • никогда_не_создавать
Определяет, следует ли создавать Subject Key Identifier (SKI) из открытого ключа.
Значение create_if_not_provided (по умолчанию) создаёт SKI только тогда, когда CSR его не предоставляет.
Значение always_create всегда создаёт SKI. Если CSR предоставляет SKI, он игнорируется.
Значение never_create никогда не создаёт SKI. Если CSR предоставляет SKI, он используется.
Используется только поставщиком selfsigned.
Обратите внимание, что это поддерживается только если используется бэкенд cryptography.
selfsigned_digest
string
По умолчанию:
"sha256"
Алгоритм хеширования, используемый при самоподписи сертификата.
Используется только поставщиком selfsigned.
selfsigned_not_after
string
По умолчанию:
"+3650d"
Точка времени, после которой сертификат перестает быть действительным.
Время можно указать как относительное время, так и как абсолютную метку времени.
Время всегда интерпретируется как UTC.
Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени данный модуль НЕ идемпотентен.
Если это значение не указано, сертификат перестанет быть действительным через 10 лет.
Используется только поставщиком selfsigned.
В macOS 10.15 и более поздних версиях сертификаты сервера TLS должны иметь срок действия 825 дней или меньше. Дополнительные сведения см. на странице https://support.apple.com/en-us/HT210176.

псевдонимы: selfsigned_notAfter
selfsigned_not_before
string
По умолчанию:
"+0s"
Точка времени, с которой сертификат считается действительным.
Время можно указать как относительное время, так и как абсолютную метку времени.
Время всегда интерпретируется как UTC.
Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени данный модуль НЕ идемпотентен.
Если это значение не указано, сертификат начнёт действовать с текущего момента.
Используется только поставщиком selfsigned.

псевдонимы: selfsigned_notBefore
selfsigned_version
integer
По умолчанию:
3
Версия сертификата selfsigned.
В настоящее время почти всегда следует использовать 3.
Используется только поставщиком selfsigned.
serole
string
Часть контекста файла SELinux, относящаяся к роли.
Если установлено _default, будет использоваться часть политики role, если она доступна.
setype
string
Часть контекста файла SELinux, относящаяся к типу.
Если установлено _default, будет использоваться часть политики type, если она доступна.
seuser
string
Часть контекста файла SELinux, относящаяся к пользователю.
По умолчанию используется политика system, где это применимо.
Если установлено _default, будет использоваться часть политики user, если она доступна.
signature_algorithms
list / elements=string
Список алгоритмов, которые вы хотите принять для подписи сертификата (например, ['sha256WithRSAEncryption', 'sha512WithRSAEncryption']).
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.
state
string
    Выбираемые значения:
  • absent
  • present ←
Определяет, должен ли сертификат существовать или нет, выполняя действия, если состояние отличается от указанного.
subject
dictionary
Ключевые/значения, которые должны присутствовать в поле имени субъекта сертификата.
Если вам нужно указать более одного значения с одним ключом, используйте список в качестве значения.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.
subject_alt_name
list / elements=string
Поле расширения subject_alt_name должно содержать эти значения.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.

псевдонимы: subjectAltName
subject_alt_name_strict
boolean
    Выбираемые значения:
  • нет ←
  • да
Если установлено yes, поле расширения subject_alt_name должно содержать только эти значения.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.

псевдонимы: subjectAltName_strict
subject_strict
boolean
    Выбираемые значения:
  • нет ←
  • да
Если установлено yes, поле subject должно содержать только эти значения.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.
unsafe_writes
boolean
добавлен в 2.2 ansible.builtin
    Выбираемые значения:
  • нет ←
  • да
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Один пример — файлы, монтированные с помощью docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачно (хотя он не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены проблемам гонки и могут привести к повреждению данных.
valid_at
string
Сертификат должен быть действительным в данный момент времени.
Метка времени отформатирована как ASN.1 TIME.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.
valid_in
string
Сертификат должен быть действительным в указанный момент времени относительно текущего момента.
Допустимый формат — [+-]timespec | number_of_seconds, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании этого параметра модуль НЕ является идемпотентным.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернативных вариантов см. пример замены assertonly.
version
integer
Версия сертификата.
В настоящее время она почти всегда должна быть 3.
Используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернативных вариантов см. пример замены assertonly.

Примечания

Примечание

  • Поддерживает check_mode.
  • Все значения 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

Официальная документация по модулю 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_privatekey

Официальная документация по модулю community.crypto.openssl_privatekey.

community.crypto.openssl_privatekey_pipe

Официальная документация по модулю community.crypto.openssl_privatekey_pipe.

community.crypto.openssl_publickey

Официальная документация по модулю community.crypto.openssl_publickey.

Примеры

- 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: yes

- 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 one assertonly usage using all existing options for
# assertonly, and shows how to emulate the behavior with the x509_certificate_info,
# openssl_csr_info, openssl_privatekey_info and assert modules:
- name: Usage of assertonly with all existing options
  community.crypto.x509_certificate:
    provider: assertonly
    path: /etc/ssl/crt/ansible.com.crt
    csr_path: /etc/ssl/csr/ansible.com.csr
    privatekey_path: /etc/ssl/csr/ansible.com.key
    signature_algorithms:
      - sha256WithRSAEncryption
      - sha512WithRSAEncryption
    subject:
      commonName: ansible.com
    subject_strict: yes
    issuer:
      commonName: ansible.com
    issuer_strict: yes
    has_expired: no
    version: 3
    key_usage:
      - Data Encipherment
    key_usage_strict: yes
    extended_key_usage:
      - DVCS
    extended_key_usage_strict: yes
    subject_alt_name:
      - dns:ansible.com
    subject_alt_name_strict: yes
    not_before: 20190331202428Z
    not_after: 20190413202428Z
    valid_at: "+1d10h"
    invalid_at: 20200331202428Z
    valid_in: 10  # in ten seconds

- 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

- assert:
    that:
      # When private key is specified for assertonly, this will be checked:
      - result.public_key == result_privatekey.public_key
      # When CSR is specified for assertonly, this will be 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

# Examples for some checks one could use the assertonly provider for:
# (Please note that assertonly has been deprecated!)

# How to use the assertonly provider to implement and trigger your own custom certificate generation workflow:
- name: Check if a certificate is currently still valid, ignoring failures
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    has_expired: no
  ignore_errors: yes
  register: validity_check

- name: Run custom task(s) to get a new, valid certificate in case the initial check failed
  command: superspecialSSL recreate /etc/ssl/crt/example.com.crt
  when: validity_check.failed

- name: Check the new certificate again for validity with the same parameters, this time failing the play if it is still invalid
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    has_expired: no
  when: validity_check.failed

# Some other checks that assertonly could be used for:
- name: Verify that an existing certificate was issued by the Let's Encrypt CA and is currently still valid
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    issuer:
      O: Let's Encrypt
    has_expired: no

- name: Ensure that a certificate uses a modern signature algorithm (no SHA1, MD5 or DSA)
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    signature_algorithms:
      - sha224WithRSAEncryption
      - sha256WithRSAEncryption
      - sha384WithRSAEncryption
      - sha512WithRSAEncryption
      - sha224WithECDSAEncryption
      - sha256WithECDSAEncryption
      - sha384WithECDSAEncryption
      - sha512WithECDSAEncryption

- name: Ensure that the existing certificate belongs to the specified private key
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    privatekey_path: /etc/ssl/private/example.com.pem
    provider: assertonly

- name: Ensure that the existing certificate is still valid at the winter solstice 2017
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    valid_at: 20171221162800Z

- name: Ensure that the existing certificate is still valid 2 weeks (1209600 seconds) from now
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    valid_in: 1209600

- name: Ensure that the existing certificate is only used for digital signatures and encrypting other keys
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    key_usage:
      - digitalSignature
      - keyEncipherment
    key_usage_strict: true

- name: Ensure that the existing certificate can be used for client authentication
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    extended_key_usage:
      - clientAuth

- name: Ensure that the existing certificate can only be used for client authentication and time stamping
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    extended_key_usage:
      - clientAuth
      - 1.3.6.1.5.5.7.3.8
    extended_key_usage_strict: true

- name: Ensure that the existing certificate has a certain domain in its subjectAltName
  community.crypto.x509_certificate:
    path: /etc/ssl/crt/example.com.crt
    provider: assertonly
    subject_alt_name:
      - www.example.com
      - test.example.com

Возвращаемые значения

Общие возвращаемые значения описаны здесь, а следующие — поля, уникальные для данного модуля:

Ключ Возвращаемое значение Описание
backup_file
string
изменён, если backup — yes
Имя созданного файла резервной копии.

Пример:
/path/to/www.ansible.com.crt.2019-03-09@11:22~
certificate
string
добавлен в 1.0.0 community.crypto
если state — present и return_content — yes
Содержимое (текущего или сгенерированного) сертификата.

filename
string
изменён или успешно
Путь к сгенерированному сертификату.

Пример:
/etc/ssl/crt/www.ansible.com.crt


Авторы

  • Yanis Guenane (@Spredzy)
  • Markus Teufelberger (@MarkusTeufelberger)

© 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/x509_certificate_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API