Spec-Zone.ru › Ansible 2.10

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

Примечание

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

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

Чтобы использовать его в плейбуке, укажите: community.crypto.openssl_certificate.

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

Обзор

  • Если библиотеки cryptography и PyOpenSSL доступны (и соответствуют минимальным требованиям к версии), cryptography будет предпочтительнее PyOpenSSL в качестве бэкенда (если бэкенд не принудительно задан с помощью select_crypto_backend). Обратите внимание, что бэкенд PyOpenSSL был устаревшим в Ansible 2.9 и будет удален в community.crypto 2.0.0.
  • Он реализует понятие поставщика (т. е. selfsigned, ownca, acme, assertonly, entrust ) для вашего сертификата.
  • Он использует python-библиотеку 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. При использовании FQCN или ключевого слова 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 (Центра сертификации) (самозаверяющим сертификатом).
  • Этот модуль позволяет (пере)генерировать сертификаты OpenSSL.

Требования

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

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
acme_accountkey_path
путь
Путь к ключу учетной записи 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
    Варианты:
  • нет ←
  • да
Если установлено значение yes, поле issuer должно содержать только эти значения.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.
key_usage
список / элементы=строка
Расширение key_usage должно содержать все эти значения.
Это используется только поставщиком assertonly.
Этот параметр устарел с Ansible 2.9 и будет удалён вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.

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

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

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

Псевдонимы: notBefore
ownca_content
строка
добавлено в 1.0.0 community.crypto
Содержимое сертификата CA (Удостоверяющего центра).
Это используется только поставщиком ownca.
Взаимоисключающее с ownca_path.
ownca_create_authority_key_identifier
boolean
    Варианты:
  • нет
  • да ←
Создать идентификатор ключа авторитета из сертификата CA. Если CSR предоставил идентификатор ключа авторитета, он игнорируется.
Идентификатор ключа авторитета генерируется из идентификатора субъектного ключа сертификата CA, если он доступен. Если он недоступен, используется открытый ключ сертификата CA.
Это используется только поставщиком ownca.
Обратите внимание, что это поддерживается только в случае использования бэкенда cryptography!
ownca_create_subject_key_identifier
строка
    Варианты:
  • 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
строка
По умолчанию:
"sha256"
Алгоритм хеширования, используемый для сертификата ownca.
Это используется только поставщиком ownca.
ownca_not_after
строка
По умолчанию:
"+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
строка
По умолчанию:
"+0s"
Момент времени, с которого сертификат действует.
Время может быть указано как относительное время, так и абсолютная отметка времени.
Время всегда интерпретируется как UTC.
Допустимый формат [+-]timespec | ASN.1 TIME, где timespec может быть целым числом + [w | d | h | m | s] (например, +32w1d2h).
Обратите внимание, что при использовании относительного времени этот модуль НЕ идемпотентен.
Если это значение не указано, сертификат начнёт действовать с текущего момента.
Это используется только поставщиком ownca.
ownca_path
путь
Полный путь к сертификату CA (Удостоверяющего центра).
Это используется только поставщиком ownca.
Взаимоисключающее с ownca_content.
ownca_privatekey_content
строка
добавлено в 1.0.0 community.crypto
Содержимое закрытого ключа CA (Удостоверяющего центра) для использования при подписи сертификата.
Это используется только поставщиком ownca.
Взаимоисключающее с ownca_privatekey_path.
ownca_privatekey_passphrase
строка
Пароль для ownca_privatekey_path соответственно ownca_privatekey_content.
Это используется только поставщиком ownca.
ownca_privatekey_path
путь
Путь к закрытому ключу CA (Удостоверяющего центра) для использования при подписи сертификата.
Это используется только поставщиком ownca.
Взаимоисключающее с ownca_privatekey_content.
ownca_version
целое число
По умолчанию:
3
Версия сертификата ownca.
В настоящее время она должна почти всегда быть 3.
Это используется только поставщиком ownca.
owner
строка
Имя пользователя, который должен владеть файлом/директорией, как это передаётся в chown.
path
путь / обязательно
Полный путь на удалённом сервере, где должен быть создан или уже расположен файл сертификата.
privatekey_content
строка
добавлено в 1.0.0 community.crypto
Путь к закрытому ключу для использования при подписи сертификата.
Взаимоисключающее с privatekey_path.
privatekey_passphrase
строка
Пароль для privatekey_path соответственно privatekey_content.
Требуется, если закрытый ключ защищен паролем.
privatekey_path
путь
Путь к закрытому ключу для использования при подписи сертификата.
Взаимоисключающее с privatekey_content.
provider
строка
    Варианты:
  • 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 (ECS).
Обязательно, если state имеет значение present.
END_OF_DOCUMENT_MARKER
return_content
boolean
добавлено в 1.0.0 community.crypto
    Варианты:
  • нет ←
  • да
Если установлено в yes, вернёт содержимое (текущего или сгенерированного) сертификата как certificate.
select_crypto_backend
string
    Варианты:
  • auto ←
  • 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
    Варианты:
  • отсутствует
  • присутствует ←
Определяет, должен ли существовать сертификат или нет, выполняя действия, если состояние отличается от указанного.
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.
версия
целое число
Версия сертификата.
В настоящее время она почти всегда должна быть 3.
Используется только поставщиком assertonly.
Этот параметр устарел начиная с Ansible 2.9 и будет удален вместе с поставщиком assertonly в community.crypto 2.0.0. Для альтернатив см. пример замены assertonly.

Примечания

Примечание

  • Все значения 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:

- 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

- 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

- 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

- 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
строка
изменено, если backup равно yes
Имя созданного файла резервной копии.

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

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

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


Авторы

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

© 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_certificate_module.html

Spec-Zone.ru

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