Spec-Zone.ru › Ansible 2.9

acme_inspect – Отправка прямых запросов на сервер ACME

Новое в версии 2.8.

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

Обзор

  • Позволяет отправлять прямые запросы на сервер ACME с использованием протокола ACME, который поддерживается такими удостоверяющими центрами, как Let’s Encrypt.
  • Этот модуль можно использовать для отладки неудачных попыток запроса сертификатов, например, когда модуль acme_certificate терпит неудачу или сталкивается с проблемой, которую вы хотите исследовать.
  • Модуль также можно использовать для прямого доступа к функциям серверов ACME, которые пока не поддерживаются модулями Ansible ACME.

Требования

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

  • python >= 2.6
  • либо openssl, либо cryptography >= 1.5

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
account_key_content
строка
добавлено в 2.5
Содержимое ключа учетной записи ACME RSA или эллиптической кривой.
Взаимоисключительно с account_key_src.
Требуется, если account_key_src не используется.
Предупреждение: содержимое будет записано во временный файл, который будет удален Ansible по завершении работы модуля. Поскольку это важный закрытый ключ — он может быть использован для изменения ключа учетной записи или для отзыва сертификатов без знания их закрытых ключей — это может быть неприемлемо.
В случае использования cryptography, содержимое не записывается во временный файл. Тем не менее, Ansible может записать его в файл во время перемещения модуля вместе с его аргументами на узел, где он будет выполнен.
account_key_src
путь
Путь к файлу, содержащему ключ учетной записи ACME RSA или эллиптической кривой.
Ключи RSA можно создать с помощью openssl genrsa .... Ключи эллиптических кривых можно создать с помощью openssl ecparam -genkey .... Также можно использовать любой другой инструмент, создающий закрытые ключи в формате PEM.
Взаимоисключительно с account_key_content.
Требуется, если account_key_content не используется.

алиасы: account_key
account_uri
строка
добавлено в 2.7
Если указано, предполагается, что URI учетной записи задан как указано. Если ключ учетной записи не соответствует этой учетной записи или учетная запись с этим URI не существует, модуль завершается с ошибкой.
acme_directory
строка
Значение по умолчанию:
"https://acme-staging.api.letsencrypt.org/directory"
Используемый каталог ACME. Это URL-адрес точки входа для доступа к API сервера удостоверяющего центра.
В целях безопасности значение по умолчанию устанавливается для сервера подготовки 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 адрес каталога производства для ACME v1 — https://acme-v01.api.letsencrypt.org/directory, а для ACME v2 — https://acme-v02.api.letsencrypt.org/directory.
Для Buypass адрес каталога производства для ACME v2 и v1 — https://api.buypass.com/acme/directory.
Предупреждение: Пока модуль тестировался только с Let's Encrypt (подготовка и производство), Buypass (подготовка и производство) и сервером тестирования Pebble.
... (остальные параметры)

Примечания

Примечание

  • Параметр account_uri должен быть указан для правильной аутентификации запросов ACME v2 (кроме запросов new-account).
  • Используя инструмент ansible, acme_inspect можно использовать для прямого выполнения запросов ACME без необходимости написания playbook. Например, следующая команда извлекает учетную запись ACME с ID 1 из Let’s Encrypt (предполагая, что /path/to/key является правильным закрытым ключом учетной записи): ansible localhost -m acme_inspect -a "account_key_src=/path/to/key acme_directory=https://acme-v02.api.letsencrypt.org/directory acme_version=2 account_uri=https://acme-v02.api.letsencrypt.org/acme/acct/1 method=get url=https://acme-v02.api.letsencrypt.org/acme/acct/1"
  • Если доступна достаточно новая версия библиотеки cryptography (см. Требования для подробностей), она будет использоваться вместо бинарника openssl. Это можно явно отключить или включить с помощью параметра select_crypto_backend. Обратите внимание, что использование бинарника openssl будет медленнее и менее безопасно, поскольку содержимое закрытых ключей всегда должно храниться на диске (см. account_key_content).
  • Хотя значения по умолчанию выбраны таким образом, чтобы модуль можно было использовать с удостоверяющим центром Let’s Encrypt, в принципе этот модуль можно использовать с любым удостоверяющим центром, предоставляющим конечную точку ACME, например, Buypass Go SSL.

См. также

См. также

Автоматическая система управления сертификатами (ACME)
Спецификация протокола ACME (RFC 8555).
Расширение ACME TLS ALPN Challenge
Спецификация вызова tls-alpn-01 (RFC 8737).

Примеры

- name: Get directory
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    method: directory-only
  register: directory

- name: Create an account
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    url: "{{ directory.newAccount}}"
    method: post
    content: '{"termsOfServiceAgreed":true}'
  register: account_creation
  # account_creation.headers.location contains the account URI
  # if creation was successful

- name: Get account information
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ account_creation.headers.location }}"
    method: get

- name: Update account contacts
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ account_creation.headers.location }}"
    method: post
    content: '{{ account_info | to_json }}'
  vars:
    account_info:
      # For valid values, see
      # https://tools.ietf.org/html/rfc8555#section-7.3
      contact:
      - mailto:me@example.com

- name: Create certificate order
  acme_certificate:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    csr: /etc/pki/cert/csr/sample.com.csr
    fullchain_dest: /etc/httpd/ssl/sample.com-fullchain.crt
    challenge: http-01
  register: certificate_request

# Assume something went wrong. certificate_request.order_uri contains
# the order URI.

- name: Get order information
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ certificate_request.order_uri }}"
    method: get
  register: order

- name: Get first authz for order
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ order.output_json.authorizations[0] }}"
    method: get
  register: authz

- name: Get HTTP-01 challenge for authz
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ authz.output_json.challenges | selectattr('type', 'equalto', 'http-01') }}"
    method: get
  register: http01challenge

- name: Activate HTTP-01 challenge manually
  acme_inspect:
    acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
    acme_version: 2
    account_key_src: /etc/pki/cert/private/account.key
    account_uri: "{{ account_creation.headers.location }}"
    url: "{{ http01challenge.url }}"
    method: post
    content: '{}'

Значения возврата

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

Ключ Возвращаемое значение Описание
directory
словарь
всегда
Содержимое каталога ACME

Пример:
{ "a85k3x9f91A4": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417", "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change", "meta": { "caaIdentities": [ "letsencrypt.org" ], "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf", "website": "https://letsencrypt.org" }, "newAccount": "https://acme-v02.api.letsencrypt.org/acme/new-acct", "newNonce": "https://acme-v02.api.letsencrypt.org/acme/new-nonce", "newOrder": "https://acme-v02.api.letsencrypt.org/acme/new-order", "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert" }
headers
словарь
всегда
HTTP-заголовки запроса (с ключами в нижнем регистре)

Пример:
{ "boulder-requester": "12345", "cache-control": "max-age=0, no-cache, no-store", "connection": "close", "content-length": "904", "content-type": "application/json", "cookies": {}, "cookies_string": "", "date": "Wed, 07 Nov 2018 12:34:56 GMT", "expires": "Wed, 07 Nov 2018 12:44:56 GMT", "link": "<https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf>;rel="terms-of-service"", "msg": "OK (904 байт)", "pragma": "no-cache", "replay-nonce": "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGH", "server": "nginx", "status": 200, "strict-transport-security": "max-age=604800", "url": "https://acme-v02.api.letsencrypt.org/acme/acct/46161", "x-frame-options": "DENY" }
output_json
словарь
если вывод можно распарсить как JSON
Вывод, распарсенный как JSON

Пример:
[{'id': 12345}, {'key': [{'kty': 'RSA'}, '...']}]
output_text
строка
всегда
Необработанный текстовый вывод

Пример:
{ "id": 12345, "key": { "kty": "RSA", ...


Статус

  • Данный модуль не гарантирует обратную совместимость интерфейса. [превью]
  • Этот модуль поддерживается сообществом Ansible. [community]

Авторы

  • Felix Fontein (@felixfontein)

Подсказка

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

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/acme_inspect_module.html

Spec-Zone.ru

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