Модуль community.crypto.acme_certificate_order_finalize — завершение заказа ACME v2
Примечание
Этот модуль является частью коллекции community.crypto (версия 3.2.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в состав ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля необходимы дополнительные требования; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: community.crypto.acme_certificate_order_finalize.
Добавлено в community.crypto 2.24.0
Краткое описание
- Завершает заказ ACME v2 и получает сертификат и цепочки сертификатов. Это последний шаг для получения нового сертификата с помощью протокола ACME от центра сертификации, например Let’s Encrypt. Этот модуль не поддерживает ACME v1 — исходную версию протокола ACME, существовавшую до его стандартизации.
- Этот модуль необходимо использовать совместно с модулями community.crypto.acme_certificate_order_create и community.crypto.acme_certificate_order_validate.
Требования
Следующие требования должны быть выполнены на узле, на котором запускается этот модуль.
- либо
openssl - либо cryptography >= 3.3
Параметры
Параметр | Комментарии |
|---|---|
account_key_content string | Содержимое ключа учетной записи ACME RSA или ключа на эллиптических кривых. Для ключей на эллиптических кривых поддерживаются только следующие кривые: Несовместим с Обязателен, если не используется Предупреждение: содержимое будет записано во временный файл, который Ansible удалит после завершения работы модуля. Поскольку это важный закрытый ключ — его можно использовать для смены ключа учетной записи или отзыва сертификатов, не зная их закрытых ключей, — такой способ может быть неприемлемым. Если используется |
account_key_passphrase string добавлено в community.crypto 1.6.0 | Парольная фраза для расшифровки ключа учетной записи. Примечание: эта возможность не поддерживается бэкендом |
account_key_src псевдонимы: account_key path | Путь к файлу, содержащему ключ учетной записи ACME RSA или ключ на эллиптических кривых. Для ключей на эллиптических кривых поддерживаются только следующие кривые: Закрытые ключи можно создать с помощью модулей community.crypto.openssl_privatekey или community.crypto.openssl_privatekey_pipe. Если необходимая библиотека (cryptography) недоступна, ключи можно создать непосредственно с помощью инструмента командной строки Несовместим с Обязателен, если не используется |
account_uri string | Если указано, модуль предполагает, что URI учетной записи соответствует заданному значению. Если ключ учетной записи не соответствует этой учетной записи или учетная запись с таким URI не существует, модуль завершится с ошибкой. |
acme_directory string / обязательный | Используемый каталог ACME. Это URL-адрес точки входа для доступа к API сервера центра сертификации ACME. В целях безопасности по умолчанию используется тестовый сервер Let’s Encrypt (для протокола ACME v1). Он будет создавать технически корректные, но недоверенные сертификаты. Все тестовые конечные точки Let’s Encrypt перечислены здесь: https://letsencrypt.org/docs/staging-environment/. Для Let’s Encrypt URL-адрес рабочего каталога ACME v2: https://acme-v02.api.letsencrypt.org/directory. Для ZeroSSL URL-адрес рабочего каталога ACME v2: https://acme.zerossl.com/v2/DV90. Для Sectigo URL-адрес рабочего каталога ACME v2: https://acme-qa.secure.trust-provider.com/v2/DV. Для HARICA URL-адрес рабочего каталога ACME v2: https://acme.harica.gr/XXX/directory, где XXX — значение, уникальное для вашей учетной записи. В примечаниях к этому модулю приведен список служб ACME, с которыми модуль прошел тестирование. |
acme_version integer | Версия ACME конечной точки. Для стандартизированных конечных точек ACME v2 должно быть указано Значение Допустимые значения:
|
cert_dest path | Файл назначения для сертификата. |
chain_dest path | Если указано, промежуточный сертификат будет записан в этот файл. |
csr path | Файл, содержащий CSR для нового сертификата. Его можно создать с помощью community.crypto.openssl_csr. CSR может содержать несколько альтернативных имен субъекта, но для каждого из них будет создан отдельный запрос подтверждения, который необходимо выполнить, чтобы CSR был подписан. Примечание: закрытый ключ, использованный для создания CSR, не должен быть ключом учетной записи. С точки зрения безопасности это плохая идея, и центр сертификации не должен принимать такой CSR. В этом случае сервер ACME должен вернуть ошибку. Необходимо указать ровно один из параметров |
csr_content string | Содержимое CSR для нового сертификата. Его можно создать с помощью community.crypto.openssl_csr_pipe. CSR может содержать несколько альтернативных имен субъекта, но для каждого из них будет создан отдельный запрос подтверждения, который необходимо выполнить, чтобы CSR был подписан. Примечание: закрытый ключ, использованный для создания CSR, не должен быть ключом учетной записи. С точки зрения безопасности это плохая идея, и центр сертификации не должен принимать такой CSR. В этом случае сервер ACME должен вернуть ошибку. Необходимо указать ровно один из параметров |
deactivate_authzs string | Деактивировать объекты аутентификации (authz) после выдачи сертификата или в случае неудачи при его выдаче.
Объекты аутентификации привязаны к ключу учетной записи и остаются действительными в течение определенного времени. Их можно использовать для выдачи сертификатов без повторной аутентификации домена. Это может представлять угрозу безопасности. Допустимые значения:
|
fullchain_dest path | Файл назначения для полной цепочки (то есть сертификата, за которым следует цепочка промежуточных сертификатов). |
order_uri string / обязательный | URI заказа, предоставленный модулем |
request_timeout integer добавлено в community.crypto 2.3.0 | Время, в течение которого Ansible ожидает ответа от API ACME. Это время ожидания применяется ко всем HTTP(S)-запросам (HEAD, GET, POST). По умолчанию: |
retrieve_all_alternates boolean | Если задано значение Допустимые значения:
|
select_chain list / элементы=dictionary | Позволяет задать критерии выбора (альтернативной) цепочки доверия. Список критериев обрабатывается по порядку до тех пор, пока не будет найдена подходящая цепочка. Если такая цепочка найдена, модуль использует ее вместо цепочки по умолчанию. Если критерию соответствует несколько цепочек, будет возвращена первая подходящая. Порядок определяется расположением заголовков Каждый критерий может состоять из нескольких разных условий, например Этот параметр можно использовать только с бэкендом |
|
authority_key_identifier string |
Проверяет наличие расширения AuthorityKeyIdentifier. Это идентификатор, основанный на закрытом ключе издателя промежуточного сертификата. Идентификатор должен иметь формат |
|
issuer dictionary |
Позволяет указать части издателя сертификата в цепочке, которым он должен соответствовать для выбора. Если Примером значения может быть |
|
subject dictionary |
Позволяет указать части субъекта сертификата в цепочке, которым он должен соответствовать для выбора. Если Примером значения может быть |
|
subject_key_identifier string |
Проверяет наличие расширения SubjectKeyIdentifier. Это идентификатор, основанный на закрытом ключе промежуточного сертификата. Идентификатор должен иметь формат |
|
test_certificates string |
Определяет, какие сертификаты в цепочке будут проверяться.
Допустимые значения:
|
select_crypto_backend string | Определяет, какой криптографический бэкенд использовать. По умолчанию выбирается Если задано значение Если задано значение Допустимые значения:
|
validate_certs boolean | Следует ли проверять сертификаты TLS при обращении к каталогу ACME. Предупреждение: значение Допустимые значения:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группы действий: community.crypto.acme, acme | Используйте |
check_mode | Поддержка: none | Может выполняться в режиме |
diff_mode | Поддержка: none | В режиме diff будут возвращены сведения об изменениях (или возможных изменениях в |
idempotent | Поддержка: full | При последовательном запуске дважды вне режима проверки с одинаковыми аргументами второй запуск указывает на отсутствие изменений. Предполагается, что система, которой управляет модуль или к которой он обращается, не изменилась значимым образом. |
safe_file_operations | Поддержка: full | Использует строгие функции Ansible для работы с файлами, чтобы обеспечить правильные разрешения и предотвратить повреждение данных. |
Примечания
Примечание
- Хотя значения по умолчанию выбраны так, чтобы модуль можно было использовать с центром сертификации Let’s Encrypt, в принципе модуль можно использовать с любым центром сертификации, предоставляющим конечную точку ACME.
- На данный момент разработчики тестировали модули ACME только с Let’s Encrypt (тестовая и рабочая среды), ZeroSSL (рабочая среда) и тестовым сервером Pebble. Сообщество сообщало, что они также работают с Sectigo ACME Service для InCommon и HARICA. Если у вас возникнут проблемы с другим сервером ACME, пожалуйста, создайте задачу, чтобы помочь нам обеспечить его поддержку. Мы также будем благодарны за сообщения о том, что не упомянутый здесь сервер ACME работает.
- Если доступна достаточно новая версия библиотеки
cryptography(подробности см. в разделе «Требования»), она будет использоваться вместо исполняемого файлаopenssl. Ее можно явно отключить или включить с помощью параметраselect_crypto_backend. Обратите внимание, что использование исполняемого файлаopensslбудет медленнее и менее безопасным, поскольку содержимое закрытого ключа всегда приходится хранить на диске (см.account_key_content).
См. также
См. также
- community.crypto.acme_certificate_order_create
-
Создаёт заказ ACME.
- community.crypto.acme_certificate_order_validate
-
Проверяет ожидающие авторизации заказа ACME.
- community.crypto.acme_certificate_order_info
-
Получает информацию о заказе ACME.
- Документация Let’s Encrypt
-
Документация центра сертификации Let’s Encrypt. Содержит полезную информацию, например о лимитах запросов.
- Среда автоматического управления сертификатами (ACME)
-
Спецификация протокола ACME (RFC 8555).
- community.crypto.certificate_complete_chain
-
Позволяет найти корневой сертификат для возвращённой полной цепочки.
- community.crypto.acme_certificate_revoke
-
Позволяет отзывать сертификаты.
- community.crypto.acme_inspect
-
Позволяет отлаживать проблемы.
- community.crypto.acme_certificate_deactivate_authz
-
Позволяет деактивировать (аннулировать) заказы ACME v2.
Примеры
---
### Example with HTTP-01 challenge ###
- name: Create a challenge for sample.com using a account key from a variable
community.crypto.acme_certificate_order_create:
account_key_content: "{{ account_private_key }}"
csr: /etc/pki/cert/csr/sample.com.csr
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_order_create:
account_key_content: >-
{{ lookup('community.hashi_vault.hashi_vault', 'secret=secret/account_private_key:value') }}
csr: /etc/pki/cert/csr/sample.com.csr
register: sample_com_challenge
# Alternative first step:
- name: Create a challenge for sample.com using a account key file
community.crypto.acme_certificate_order_create:
account_key_src: /etc/pki/cert/private/account.key
csr_content: "{{ lookup('file', '/etc/pki/cert/csr/sample.com.csr') }}"
register: sample_com_challenge
# Perform the necessary steps to fulfill the challenge. For example:
#
# - name: Copy http-01 challenges
# ansible.builtin.copy:
# dest: /var/www/{{ item.identifier }}/{{ item.challenges['http-01'].resource }}
# content: "{{ item.challenges['http-01'].resource_value }}"
# loop: "{{ sample_com_challenge.challenge_data }}"
# when: "'http-01' in item.challenges"
- name: Let the challenge be validated
community.crypto.acme_certificate_order_validate:
account_key_src: /etc/pki/cert/private/account.key
order_uri: "{{ sample_com_challenge.order_uri }}"
challenge: http-01
- name: Retrieve the cert and intermediate certificate
community.crypto.acme_certificate_order_finalize:
account_key_src: /etc/pki/cert/private/account.key
csr: /etc/pki/cert/csr/sample.com.csr
order_uri: "{{ sample_com_challenge.order_uri }}"
cert_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
---
### Example with DNS challenge against production ACME server ###
- name: Create a challenge for sample.com using a account key file.
community.crypto.acme_certificate_order_create:
acme_directory: https://acme-v01.api.letsencrypt.org/directory
account_key_src: /etc/pki/cert/private/account.key
csr: /etc/pki/cert/csr/sample.com.csr
register: sample_com_challenge
# Perform the necessary steps to fulfill the challenge. For example:
#
# - 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 }}"
- name: Let the challenge be validated
community.crypto.acme_certificate_order_validate:
acme_directory: https://acme-v01.api.letsencrypt.org/directory
account_key_src: /etc/pki/cert/private/account.key
order_uri: "{{ sample_com_challenge.order_uri }}"
challenge: dns-01
- name: Retrieve the cert and intermediate certificate
community.crypto.acme_certificate_order_finalize:
acme_directory: https://acme-v01.api.letsencrypt.org/directory
account_key_src: /etc/pki/cert/private/account.key
csr: /etc/pki/cert/csr/sample.com.csr
order_uri: "{{ sample_com_challenge.order_uri }}"
cert_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
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
account_uri string | URI учётной записи ACME. Возвращается: при успехе |
all_chains list / elements=dictionary | Если Подробнее см. раздел 7.4.2 RFC 8555. Возвращается: при успехе и |
|
cert string |
Сам сертификат конечного узла в формате PEM. Возвращается: всегда |
|
chain string |
Цепочка сертификатов, не включающая корневой сертификат, представленная объединёнными сертификатами PEM. Возвращается: всегда |
|
full_chain string |
Цепочка сертификатов, не включающая корневой сертификат, но включающая сертификат конечного узла, представленная объединёнными сертификатами PEM. Возвращается: всегда |
selected_chain dictionary | Выбранная цепочка сертификатов. Если Возвращается: при успехе |
|
cert string |
Сам сертификат конечного узла в формате PEM. Возвращается: всегда |
|
chain string |
Цепочка сертификатов, не включающая корневой сертификат, представленная объединёнными сертификатами PEM. Возвращается: всегда |
|
full_chain string |
Цепочка сертификатов, не включающая корневой сертификат, но включающая сертификат конечного узла, представленная объединёнными сертификатами PEM. Возвращается: всегда |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/crypto/acme_certificate_order_finalize_module.html