Spec-Zone.ru › Ansible

Модуль community.crypto.acme_certificate – Создание сертификатов SSL/TLS с использованием протокола ACME

Примечание

Этот модуль является частью коллекции community.crypto (версия 2.22.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля вам потребуются дополнительные требования, см. Требования для получения подробной информации.

Для использования в playbook, укажите: community.crypto.acme_certificate.

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

Краткое описание

  • Создание и обновление сертификатов SSL/TLS с помощью центра сертификации, поддерживающего протокол ACME, например, Let’s Encrypt или Buypass. Текущая реализация поддерживает http-01, dns-01 и tls-alpn-01 задачи проверки.
  • Для использования этого модуля его необходимо выполнить дважды. Либо как две разные задачи в одном запуске, либо во время двух запусков. Обратите внимание, что вывод первого запуска необходимо записать и передать во второй запуск как аргумент модуля data.
  • Между этими двумя задачами необходимо выполнить необходимые шаги для выбранной задачи проверки любыми необходимыми способами. Для http-01 это означает создание необходимого файла проверки на целевом веб-сервере. Для dns-01 необходимо создать необходимую DNS-запись. Для tls-alpn-01 необходимо создать и обслуживать необходимый сертификат. Выполнение этих шагов не является обязанностью этого модуля.
  • Для получения подробной информации о выполнении этих задач проверки, вам может потребоваться ознакомиться с основной спецификацией ACME и спецификацией TLS-ALPN-01. Также обратите внимание на примеры, приведенные для этого модуля.
  • Модуль включает экспериментальную поддержку идентификаторов IP в соответствии с RFC 8738.

Требования

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

  • либо openssl, либо cryptography >= 1.5
  • ipaddress

Параметры

Параметр

Комментарии

account_email

string

Адрес электронной почты, связанный с этой учетной записью.

Он будет использоваться для предупреждений о истечении срока действия сертификата.

Обратите внимание, что когда modify_account не установлен в false и вы также использовали модуль community.crypto.acme_account для указания более чем одного контакта для вашей учетной записи, этот модуль обновит вашу учетную запись и ограничит ее одним (не более) контактным адресом электронной почты, указанным здесь.

account_key_content

string

Содержимое ключа ACME account RSA или ключа эллиптической кривой.

Взаимоисключающе с account_key_src.

Обязательно, если не используется account_key_src.

Предупреждение: содержимое будет записано во временный файл, который будет удален Ansible по завершении работы модуля. Поскольку это важный закрытый ключ — его можно использовать для изменения ключа учетной записи или для отзыва ваших сертификатов без знания их закрытых ключей —, это может быть неприемлемо.

В случае использования cryptography, содержимое не записывается во временный файл. Тем не менее, может произойти запись на диск Ansible в процессе перемещения модуля с его аргументами на узел, где он выполняется.

account_key_passphrase

string

добавлено в community.crypto 1.6.0

Пароль для декодирования ключа учетной записи.

Примечание: это не поддерживается бекендом openssl, только бекендом cryptography.

account_key_src

aliases: account_key

path

Путь к файлу, содержащему ключ ACME account RSA или ключ эллиптической кривой.

Закрытые ключи могут быть созданы с помощью модулей community.crypto.openssl_privatekey или community.crypto.openssl_privatekey_pipe. Если необходимый (cryptography) недоступен, ключи также могут быть созданы непосредственно с помощью командной строки openssl: ключи RSA могут быть созданы с помощью openssl genrsa .... Ключи эллиптической кривой могут быть созданы с помощью openssl ecparam -genkey .... Можно использовать любой другой инструмент, создающий закрытые ключи в формате PEM.

Взаимоисключающе с account_key_content.

Обязательно, если не используется account_key_content.

account_uri

string

Если указано, предполагается, что URI учетной записи указан. Если ключ учетной записи не соответствует этой учетной записи или учетная запись с этим URI не существует, модуль завершается ошибкой.

acme_directory

string / required

Каталог ACME для использования. Это URL-адрес точки входа для доступа к API сервера ACME CA.

В целях безопасности значение по умолчанию установлено на тестовый сервер Let’s Encrypt (для протокола ACME v1). Это создаст технически правильные, но недоверенные сертификаты.

Для Let’s Encrypt все тестовые конечные точки можно найти здесь: https://letsencrypt.org/docs/staging-environment/. Для Buypass все конечные точки можно найти здесь: https://community.buypass.com/t/63d4ay/buypass-go-ssl-endpoints

Для Let’s Encrypt, URL-адрес производственного каталога для ACME v2 — https://acme-v02.api.letsencrypt.org/directory.

Для Buypass, URL-адрес производственного каталога для ACME v2 и v1 — https://api.buypass.com/acme/directory.

Для ZeroSSL, URL-адрес производственного каталога для ACME v2 — https://acme.zerossl.com/v2/DV90.

Для Sectigo, URL-адрес производственного каталога для ACME v2 — https://acme-qa.secure.trust-provider.com/v2/DV.

Примечания к этому модулю содержат список служб ACME, с которыми был протестирован этот модуль.

acme_version

integer / required

Версия ACME конечной точки.

Должно быть 1 для классических конечных точек Let’s Encrypt и Buypass ACME или 2 для стандартизированных конечных точек ACME v2.

Значение 1 устарело начиная с community.crypto 2.0.0 и будет удалено из community.crypto 3.0.0.

Варианты:

  • 1
  • 2

agreement

string

URI к документу с условиями обслуживания, с которыми вы соглашаетесь при использовании службы ACME v1 на acme_directory.

По умолчанию используется последняя версия, полученная с URL-адреса acme_directory.

Этот параметр будет использоваться только тогда, когда acme_version равно 1.

chain_dest

aliases: chain

path

Если указано, промежуточный сертификат будет записан в этот файл.

challenge

string

Вызов, который будет выполнен.

Если установлен в no challenge, вызов не будет использоваться. Это необходимо для некоторых частных центров сертификации, которые используют внешнюю привязку учетных записей и другие средства проверки гарантии сертификата. Например, учетная запись может быть разрешена для выдачи сертификатов для foo.example.com без дополнительной проверки в течение определенного периода времени.

Варианты:

  • "http-01" ← (по умолчанию)
  • "dns-01"
  • "tls-alpn-01"
  • "no challenge"

csr

aliases: src

path

Файл, содержащий CSR для нового сертификата.

Может быть создан с помощью community.crypto.openssl_csr.

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

Примечание. Закрытый ключ, используемый для создания CSR, не должен быть ключом учетной записи. С точки зрения безопасности это плохая идея, и центр сертификации не должен принимать CSR. В этом случае сервер ACME должен вернуть ошибку.

Должен быть указан ровно один из csr или csr_content.

csr_content

string

added in community.crypto 1.2.0

Содержимое CSR для нового сертификата.

Может быть создан с помощью community.crypto.openssl_csr_pipe.

CSR может содержать несколько дополнительных имен субъектов (Subject Alternate Names), но каждое из них приведет к отдельному вызову, который должен быть выполнен для подписания CSR.

Примечание: закрытый ключ, используемый для создания CSR, не должен быть ключом учетной записи. С точки зрения безопасности это плохая идея, и центр сертификации не должен принимать CSR. В этом случае сервер ACME должен возвращать ошибку.

Должен быть указан ровно один из csr или csr_content.

data

dictionary

Данные для проверки текущих вызовов. Это должно быть указано только для второго запуска модуля.

Значение, которое должно использоваться здесь, будет предоставлено предыдущим использованием этого модуля. См. примеры для получения более подробной информации.

Обратите внимание, что для ACME v2 будет использоваться только запись order_uri из data. Для ACME v1, data должен быть не пустым, чтобы указать, что второй этап активен; все необходимые данные будут взяты из CSR.

Примечание: опция data была помечена как no_log до Ansible 2.5. Начиная с Ansible 2.6, она больше не помечается таким образом, поскольку это приводит к тому, что сообщения об ошибках становятся непригодными для использования, а data не содержит никакой информации, которую можно использовать без доступа к ключу учетной записи или которая не является общедоступной.

deactivate_authzs

boolean

Деактивировать объекты аутентификации (authz) после выдачи сертификата или в случае неудачи при выдаче сертификата.

Объекты аутентификации привязаны к ключу учетной записи и остаются действительными в течение определенного периода времени, и могут использоваться для выдачи сертификатов без необходимости повторной аутентификации домена. Это может быть проблемой безопасности.

Варианты:

  • false ← (default)
  • true

dest

aliases: cert

path

Файл назначения для сертификата.

Обязательно, если fullchain_dest не указан.

force

boolean

Принудительно выполняет проверку и валидацию, даже если существующий сертификат все еще действителен более чем на remaining_days.

Это особенно полезно при наличии обновленного CSR, например, с дополнительными доменами, для которых желателен новый сертификат.

Варианты:

  • false ← (default)
  • true

fullchain_dest

aliases: fullchain

path

Файл назначения для полной цепочки (то есть сертификат, за которым следует цепочка промежуточных сертификатов).

Обязательно, если dest не указан.

include_renewal_cert_id

string

added in community.crypto 2.20.0

Определяет, следует ли запрашивать продление существующего сертификата в соответствии с черновиком ACME ARI 3.

Это используется только тогда, когда сертификат, указанный в dest или fullchain_dest, уже существует.

never никогда не отправляет идентификатор сертификата для продления. always всегда будет отправлять его.

when_ari_supported отправляет идентификатор сертификата только в том случае, если конечная точка ARI находится в каталоге ACME.

В целом, вы должны использовать when_ari_supported, если вы знаете, что служба ACME поддерживает совместимый черновик (или окончательную версию, как только она выйдет) расширения ARI. always никогда не должно быть необходимо. Если вы не уверены или получаете странные ошибки по неверным значениям replaces в объектах заказов, используйте never, который также является значением по умолчанию.

Серверы ACME могут отказаться создавать новые заказы с replaces для сертификатов, которые уже имеют существующий заказ. Это может произойти, если этот модуль используется для создания заказа, а затем сценарий/роль завершается неудачей, если вызовы не могут быть настроены. Если сценарий/роль не записывает данные заказа для продолжения работы с существующим заказом, а пытается создать новый при следующем запуске, создание нового заказа может завершиться неудачей. По этой причине этот параметр следует устанавливать в значение, отличное от never, только если используемая роль/пьеса отслеживает данные заказа после перезапусков или если она заботится о деактивации заказов, обработка которых прерывается. Заказы можно деактивировать с помощью модуля community.crypto.acme_certificate_deactivate_authz.

Варианты:

  • "never" ← (default)
  • "when_ari_supported"
  • "always"

modify_account

boolean

Логическое значение, указывающее, должен ли модуль создавать учетную запись, если это необходимо, и обновлять ее контактные данные.

Установите в false, если вы хотите использовать модуль community.crypto.acme_account для управления своей учетной записью и избежать случайного создания новой учетной записи с использованием старого ключа, если вы изменили ключ учетной записи с помощью community.crypto.acme_account.

Если установлено в false, terms_agreed и account_email игнорируются.

Варианты:

  • false
  • true ← (default)

remaining_days

integer

Количество дней, которые должны остаться до истечения срока действия сертификата. Если cert_days < remaining_days, то он будет продлен. Если сертификат не продлен, возвращаемые значения модуля не будут включать challenge_data.

Чтобы убедиться, что сертификат продлевается в любом случае, вы можете использовать параметр force.

Значение по умолчанию: 10

request_timeout

integer

added in community.crypto 2.3.0

Время, в течение которого Ansible должен ожидать ответа от API ACME.

Это время ожидания применяется ко всем запросам HTTP(S) (HEAD, GET, POST).

Значение по умолчанию: 10

retrieve_all_alternates

boolean

При установке в true, будут извлекаться все альтернативные цепочки доверия, предлагаемые ACME CA. Они не будут записаны на диск, но будут возвращены вместе с основной цепочкой как all_chains. См. документацию для возвращаемого значения all_chains для получения подробной информации.

Варианты:

  • false ← (по умолчанию)
  • true

select_chain

list / elements=dictionary

добавлено в community.crypto 1.0.0

Позволяет указать критерии, по которым можно выбрать (альтернативную) цепочку доверия.

Список критериев будет обрабатываться по одному, пока не будет найдена цепочка, соответствующая критерию. Если такая цепочка найдена, она будет использоваться модулем вместо цепочки по умолчанию.

Если критерий соответствует нескольким цепочкам, будет возвращена первая совпадающая. Порядок определяется порядком заголовков Link, возвращаемых сервером ACME, и может быть недетерминированным.

Каждый критерий может состоять из нескольких различных условий, таких как select_chain[].issuer и select_chain[].subject. Для соответствия критерия цепочке все условия должны применяться к одному и тому же сертификату в цепочке.

Этот параметр можно использовать только с бэкендом cryptography.

authority_key_identifier

string

Проверяет расширение AuthorityKeyIdentifier. Это идентификатор, основанный на закрытом ключе издателя промежуточного сертификата.

Идентификатор должен иметь формат C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10.

issuer

dictionary

Позволяет указать части издателя сертификата, которые должны быть в выбранной цепочке.

Если select_chain[].issuer пусто, любой сертификат будет соответствовать.

Пример значения: {"commonName": "My Preferred CA Root"}.

subject

dictionary

Позволяет указать части субъекта сертификата, которые должны быть в выбранной цепочке.

Если select_chain[].subject пусто, любой сертификат будет соответствовать.

Пример значения: {"CN": "My Preferred CA Intermediate"}

subject_key_identifier

string

Проверяет расширение SubjectKeyIdentifier. Это идентификатор, основанный на закрытом ключе промежуточного сертификата.

Идентификатор должен иметь формат A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1.

test_certificates

string

Определяет, какие сертификаты в цепочке будут проверены.

all проверяет все сертификаты в цепочке (за исключением конечного, который идентичен во всех цепочках).

first проверяет только первый сертификат в цепочке, то есть тот, который подписал конечный.

last проверяет только последний сертификат в цепочке, то есть тот, который находится дальше всего от конечного. Его издателем является корневой сертификат этой цепочки.

Варианты:

  • "first"
  • "last"
  • "all" ← (по умолчанию)

select_crypto_backend

string

Определяет, какой криптографический бэкенд использовать.

Выбор по умолчанию - auto, который пытается использовать cryptography, если доступен, и возвращается к openssl.

При установке в openssl, будет пытаться использовать двоичный файл openssl.

При установке в cryptography, будет пытаться использовать библиотеку cryptography.

Варианты:

  • "auto" ← (по умолчанию)
  • "cryptography"
  • "openssl"

terms_agreed

boolean

Логическое значение, указывающее, согласны ли вы с условиями предоставления услуг.

Серверы ACME могут требовать, чтобы это значение было истинным.

Этот параметр будет использоваться только тогда, когда acme_version не равно 1.

Варианты:

  • false ← (по умолчанию)
  • true

validate_certs

boolean

Проверять ли вызовы в каталог ACME сертификаты TLS.

Предупреждение: Следует только устанавливать в false в тестовых целях, например, при тестировании с локальным сервером Pebble.

Варианты:

  • false
  • true ← (по умолчанию)

Атрибуты

Атрибут

Поддержка

Описание

action_group

Группы действий: community.crypto.acme, acme

Используйте group/acme или group/community.crypto.acme в module_defaults для установки значений по умолчанию для этого модуля.

check_mode

Поддержка: полная

Может работать в режиме check_mode и возвращать прогноз измененного состояния без изменения цели.

diff_mode

Поддержка: отсутствует

Будет возвращать подробную информацию о том, что изменилось (или, возможно, должно измениться в check_mode), в режиме diff.

safe_file_operations

Поддержка: полная

Использует строгие функции работы с файлами Ansible для обеспечения правильных разрешений и предотвращения повреждения данных.

Примечания

Примечание

  • Должен быть указан хотя бы один из dest и fullchain_dest.
  • Этот модуль включает в себя базовые функции управления учетными записями. Если вам нужен больший контроль над вашей учетной записью ACME, используйте модуль community.crypto.acme_account и отключите управление учетными записями для этого модуля, используя опцию modify_account.
  • Этот модуль назывался letsencrypt до Ansible 2.6. Использование не изменилось.
  • Хотя значения по умолчанию выбраны таким образом, что модуль может использоваться с центром сертификации Let’s Encrypt, модуль в принципе может использоваться с любым центром сертификации, предоставляющим конечную точку ACME, например, Buypass Go SSL.
  • На данный момент модули ACME были протестированы разработчиками только на Let’s Encrypt (staging и production), Buypass (staging и production), ZeroSSL (production) и Pebble testing server. Мы получили отзывы сообщества о том, что они также работают с Sectigo ACME Service for InCommon. Если у вас возникнут проблемы с другим сервером ACME, пожалуйста, создайте обращение, чтобы помочь нам в его поддержке. Отзывы о работоспособности с незамеченным сервером ACME также приветствуются.
  • Если доступна достаточно новая версия библиотеки cryptography (см. раздел «Требования» для получения подробной информации), она будет использоваться вместо двоичного файла openssl. Это можно явно отключить или включить с помощью опции select_crypto_backend. Обратите внимание, что использование двоичного файла openssl будет медленнее и менее безопасно, поскольку содержимое закрытого ключа всегда должно храниться на диске (см. account_key_content).

См. также

См. также

Документация Let’s Encrypt

Документация для центра сертификации Let’s Encrypt. Предоставляет полезную информацию, например, об ограничениях скорости.

Buypass Go SSL

Документация для центра сертификации Buypass. Предоставляет полезную информацию, например, об ограничениях скорости.

Automatic Certificate Management Environment (ACME)

Спецификация протокола ACME (RFC 8555).

ACME TLS ALPN Challenge Extension

Спецификация вызова tls-alpn-01 (RFC 8737).

community.crypto.acme_challenge_cert_helper

Помогает в подготовке вызовов tls-alpn-01.

community.crypto.openssl_privatekey

Может использоваться для создания закрытых ключей (как для сертификатов, так и для учетных записей).

community.crypto.openssl_privatekey_pipe

Может использоваться для создания закрытых ключей без записи их на диск (как для сертификатов, так и для учетных записей).

community.crypto.openssl_csr

Может использоваться для создания запроса на подпись сертификата (CSR).

community.crypto.openssl_csr_pipe

Может использоваться для создания запроса на подпись сертификата (CSR) без записи его на диск.

community.crypto.certificate_complete_chain

Позволяет найти корневой сертификат для возвращенного fullchain.

community.crypto.acme_certificate_revoke

Позволяет отозвать сертификаты.

community.crypto.acme_account

Позволяет создавать, изменять или удалять учетную запись ACME.

community.crypto.acme_inspect

Позволяет отлаживать проблемы.

community.crypto.acme_certificate_deactivate_authz

Позволяет деактивировать (аннулировать) заказы ACME v2.

Примеры

### Example with HTTP challenge ###

- name: Create a challenge for sample.com using a account key from a variable.
  community.crypto.acme_certificate:
    account_key_content: "{{ account_private_key }}"
    csr: /etc/pki/cert/csr/sample.com.csr
    dest: /etc/httpd/ssl/sample.com.crt
  register: sample_com_challenge

# Alternative first step:
- name: Create a challenge for sample.com using a account key from Hashi Vault.
  community.crypto.acme_certificate:
    account_key_content: >-
      {{ lookup('community.hashi_vault.hashi_vault', 'secret=secret/account_private_key:value') }}
    csr: /etc/pki/cert/csr/sample.com.csr
    fullchain_dest: /etc/httpd/ssl/sample.com-fullchain.crt
  register: sample_com_challenge

# Alternative first step:
- name: Create a challenge for sample.com using a account key file.
  community.crypto.acme_certificate:
    account_key_src: /etc/pki/cert/private/account.key
    csr_content: "{{ lookup('file', '/etc/pki/cert/csr/sample.com.csr') }}"
    dest: /etc/httpd/ssl/sample.com.crt
    fullchain_dest: /etc/httpd/ssl/sample.com-fullchain.crt
  register: sample_com_challenge

# perform the necessary steps to fulfill the challenge
# for example:
#
# - name: Copy http-01 challenge for sample.com
#   ansible.builtin.copy:
#     dest: /var/www/html/{{ sample_com_challenge['challenge_data']['sample.com']['http-01']['resource'] }}
#     content: "{{ sample_com_challenge['challenge_data']['sample.com']['http-01']['resource_value'] }}"
#   when: sample_com_challenge is changed and 'sample.com' in sample_com_challenge['challenge_data']
#
# Alternative way:
#
# - name: Copy http-01 challenges
#   ansible.builtin.copy:
#     dest: /var/www/{{ item.key }}/{{ item.value['http-01']['resource'] }}
#     content: "{{ item.value['http-01']['resource_value'] }}"
#   loop: "{{ sample_com_challenge.challenge_data | dict2items }}"
#   when: sample_com_challenge is changed

- name: Let the challenge be validated and retrieve the cert and intermediate certificate
  community.crypto.acme_certificate:
    account_key_src: /etc/pki/cert/private/account.key
    csr: /etc/pki/cert/csr/sample.com.csr
    dest: /etc/httpd/ssl/sample.com.crt
    fullchain_dest: /etc/httpd/ssl/sample.com-fullchain.crt
    chain_dest: /etc/httpd/ssl/sample.com-intermediate.crt
    data: "{{ sample_com_challenge }}"

### Example with DNS challenge against production ACME server ###

- name: Create a challenge for sample.com using a account key file.
  community.crypto.acme_certificate:
    account_key_src: /etc/pki/cert/private/account.key
    account_email: myself@sample.com
    src: /etc/pki/cert/csr/sample.com.csr
    cert: /etc/httpd/ssl/sample.com.crt
    challenge: dns-01
    acme_directory: https://acme-v01.api.letsencrypt.org/directory
    # Renew if the certificate is at least 30 days old
    remaining_days: 60
  register: sample_com_challenge

# perform the necessary steps to fulfill the challenge
# for example:
#
# - name: Create DNS record for sample.com dns-01 challenge
#   community.aws.route53:
#     zone: sample.com
#     record: "{{ sample_com_challenge.challenge_data['sample.com']['dns-01'].record }}"
#     type: TXT
#     ttl: 60
#     state: present
#     wait: true
#     # Note: route53 requires TXT entries to be enclosed in quotes
#     value: "{{ sample_com_challenge.challenge_data['sample.com']['dns-01'].resource_value | community.dns.quote_txt(always_quote=true) }}"
#   when: sample_com_challenge is changed and 'sample.com' in sample_com_challenge.challenge_data
#
# Alternative way:
#
# - name: Create DNS records for dns-01 challenges
#   community.aws.route53:
#     zone: sample.com
#     record: "{{ item.key }}"
#     type: TXT
#     ttl: 60
#     state: present
#     wait: true
#     # Note: item.value is a list of TXT entries, and route53
#     # requires every entry to be enclosed in quotes
#     value: "{{ item.value | map('community.dns.quote_txt', always_quote=true) | list }}"
#   loop: "{{ sample_com_challenge.challenge_data_dns | dict2items }}"
#   when: sample_com_challenge is changed

- name: Let the challenge be validated and retrieve the cert and intermediate certificate
  community.crypto.acme_certificate:
    account_key_src: /etc/pki/cert/private/account.key
    account_email: myself@sample.com
    src: /etc/pki/cert/csr/sample.com.csr
    cert: /etc/httpd/ssl/sample.com.crt
    fullchain: /etc/httpd/ssl/sample.com-fullchain.crt
    chain: /etc/httpd/ssl/sample.com-intermediate.crt
    challenge: dns-01
    acme_directory: https://acme-v01.api.letsencrypt.org/directory
    remaining_days: 60
    data: "{{ sample_com_challenge }}"
  when: sample_com_challenge is changed

# Alternative second step:
- name: Let the challenge be validated and retrieve the cert and intermediate certificate
  community.crypto.acme_certificate:
    account_key_src: /etc/pki/cert/private/account.key
    account_email: myself@sample.com
    src: /etc/pki/cert/csr/sample.com.csr
    cert: /etc/httpd/ssl/sample.com.crt
    fullchain: /etc/httpd/ssl/sample.com-fullchain.crt
    chain: /etc/httpd/ssl/sample.com-intermediate.crt
    challenge: tls-alpn-01
    remaining_days: 60
    data: "{{ sample_com_challenge }}"
    # We use Let's Encrypt's ACME v2 endpoint
    acme_directory: https://acme-v02.api.letsencrypt.org/directory
    acme_version: 2
    # The following makes sure that if a chain with /CN=DST Root CA X3 in its issuer is provided
    # as an alternative, it will be selected. These are the roots cross-signed by IdenTrust.
    # As long as Let's Encrypt provides alternate chains with the cross-signed root(s) when
    # switching to their own ISRG Root X1 root, this will use the chain ending with a cross-signed
    # root. This chain is more compatible with older TLS clients.
    select_chain:
      - test_certificates: last
        issuer:
          CN: DST Root CA X3
          O: Digital Signature Trust Co.
  when: sample_com_challenge is changed

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

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

Ключ

Описание

account_uri

string

URI учетной записи ACME.

Возвращено: изменено

all_chains

list / elements=dictionary

Когда retrieve_all_alternates установлено в true, модуль запросит у сервера ACME альтернативные цепочки. Это возвращаемое значение будет содержать список всех возвращенных цепочек, первая запись — основная цепочка, возвращенная сервером.

См. раздел 7.4.2 RFC8555 для получения подробной информации.

Возвращено: когда сертификат был получен и retrieve_all_alternates установлено в true

cert

string

Сам лиственный сертификат в формате PEM.

Возвращено: всегда

chain

string

Цепочка сертификатов, за исключением корневого, как объединенные сертификаты PEM.

Возвращено: всегда

full_chain

string

Цепочка сертификатов, за исключением корневого, но включая лиственный сертификат, как объединенные сертификаты PEM.

Возвращено: всегда

authorizations

dictionary

Данные авторизации ACME.

Сопоставляет идентификатор с объектами авторизации ACME. См. https://tools.ietf.org/html/rfc8555#section-7.1.4.

Возвращено: изменено

Пример: {"example.com": {"challenges": [{"status": "valid", "token": "A5b1C3d2E9f8G7h6", "type": "http-01", "url": "https://example.org/acme/challenge/12345", "validated": "2022-08-01T01:01:02.34Z"}], "expires": "2022-08-04T01:02:03.45Z", "identifier": {"type": "dns", "value": "example.com"}, "status": "valid", "wildcard": false}}

cert_days

integer

Количество дней, в течение которых сертификат остается действительным.

Возвращено: успех

challenge_data

dictionary

Данные вызова на идентификатор / тип вызова.

Начиная с Ansible 2.8.5, возвращаются только те вызовы, которые еще не действительны.

Возвращено: изменено

identifier

dictionary

Для каждого идентификатора предоставляет словарь типов вызовов, сопоставляемых с данными вызова.

Ключи в этом словаре являются идентификаторами. identifier — это заполнитель, используемый в документации.

Обратите внимание, что ключи не являются допустимыми идентификаторами Jinja2.

Возвращено: изменено

challenge-type

dictionary

Данные для каждого типа вызова.

Ключи в этом словаре являются типами вызовов. challenge-type — это заполнитель, используемый в документации. Возможные ключи: http-01, dns-01 и tls-alpn-01.

Обратите внимание, что ключи не являются допустимыми идентификаторами Jinja2.

Возвращено: изменено

record

string

Полное имя записи DNS для вызова.

Возвращено: изменено и вызов dns-01

Пример: "_acme-challenge.example.com"

resource

string

Ресурс вызова, который должен быть создан для проверки.

Возвращено: изменено

Пример: ".well-known/acme-challenge/evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA"

resource_original

string

Исходный ресурс вызова, включая идентификатор типа для вызовов tls-alpn-01.

Возвращено: изменено и challenge есть tls-alpn-01

Пример: "DNS:example.com"

resource_value

string

Значение, которое должен производить ресурс для проверки.

Для вызовов http-01 и dns-01 значение может использоваться как есть.

Для вызовов tls-alpn-01 обратите внимание, что это возвращаемое значение содержит закодированную в Base64 версию правильного двоичного BLOB, который должен быть помещен в расширение x509 acmeValidation; см. https://www.rfc-editor.org/rfc/rfc8737.html#section-3 для получения подробной информации. Для этого вам может понадобиться фильтр Jinja ansible.builtin.b64decode для извлечения двоичного BLOB из этого возвращаемого значения.

Возвращено: изменено

Пример: "IlirfxKKXA...17Dt3juxGJ-PCt92wr-oA"

challenge_data_dns

dictionary

Список значений TXT для каждой записи DNS, если вызов dns-01.

Начиная с Ansible 2.8.5, возвращаются только те вызовы, которые еще не действительны.

Возвращено: изменено

finalization_uri

string

URI завершения ACME.

Возвращено: изменено

order_uri

string

URI заказа ACME.

Возвращено: changed

Авторы

  • Michael Gruener (@mgruener)

Ссылки на коллекцию

  • Система отслеживания ошибок
  • Репозиторий (исходный код)
  • Запрос помощи (crypto)
  • Запрос помощи (ACME)
  • Отправить отчет об ошибке
  • Запросить функцию
  • Коммуникация

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

Spec-Zone.ru

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