community.crypto.acme_account_info 模块 – 获取 ACME 账户信息

注意

此模块是 community.crypto 集合(版本 2.22.3)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.crypto。您需要其他要求才能使用此模块,有关详细信息,请参阅要求

要在 playbook 中使用它,请指定:community.crypto.acme_account_info

概要

要求

执行此模块的主机需要满足以下要求。

参数

参数

注释

account_key_content

字符串

ACME 帐户 RSA 或椭圆曲线密钥的内容。

account_key_src 互斥。

如果未使用 account_key_src,则为必需。

警告: 该内容将被写入临时文件,该文件将在模块完成后被 Ansible 删除。由于这是一个重要的私钥 - 可以用于更改帐户密钥,或者在不知道其私钥的情况下撤销您的证书 - 这可能是不可接受的。

如果使用 cryptography,则内容不会写入临时文件。它仍然可能在 Ansible 将模块及其参数移动到执行它的节点的过程中被写入磁盘。

account_key_passphrase

字符串

在 community.crypto 1.6.0 中添加

用于解码帐户密钥的密码。

注意: openssl 后端不支持此项,仅 cryptography 后端支持。

account_key_src

别名:account_key

路径

包含 ACME 帐户 RSA 或椭圆曲线密钥的文件的路径。

可以使用 community.crypto.openssl_privatekeycommunity.crypto.openssl_privatekey_pipe 模块创建私钥。如果必备条件 (cryptography) 不可用,也可以直接使用 openssl 命令行工具创建密钥:可以使用 openssl genrsa ... 创建 RSA 密钥。可以使用 openssl ecparam -genkey ... 创建椭圆曲线密钥。也可以使用任何其他以 PEM 格式创建私钥的工具。

account_key_content 互斥。

如果未使用 account_key_content,则为必需。

account_uri

字符串

如果指定,则假定帐户 URI 与给定 URI 相同。如果帐户密钥与此帐户不匹配,或者不存在具有此 URI 的帐户,则模块将失败。

acme_directory

字符串 / 必需

要使用的 ACME 目录。这是访问 ACME CA 服务器 API 的入口点 URL。

出于安全考虑,默认设置为 Let’s Encrypt 的暂存服务器(用于 ACME v1 协议)。这将创建技术上正确但不被信任的证书。

对于 Let’s Encrypt,所有暂存端点都可以在这里找到:https://letsencrypt.openssl.ac.cn/docs/staging-environment/。对于 Buypass,所有端点都可以在这里找到:https://community.buypass.com/t/63d4ay/buypass-go-ssl-endpoints

对于 Let’s Encrypt,ACME v2 的生产目录 URL 是 https://acme-v02.api.letsencrypt.org/directory

对于 Buypass,ACME v2 和 v1 的生产目录 URL 是 https://api.buypass.com/acme/directory

对于 ZeroSSL,ACME v2 的生产目录 URL 是 https://acme.zerossl.com/v2/DV90

对于 Sectigo,ACME v2 的生产目录 URL 是 https://acme-qa.secure.trust-provider.com/v2/DV

此模块的注释包含此模块已测试过的 ACME 服务列表。

acme_version

整数 / 必需

端点的 ACME 版本。

对于经典的 Let's Encrypt 和 Buypass ACME 端点,必须为 1;对于标准化的 ACME v2 端点,必须为 2

1 自 community.crypto 2.0.0 起已弃用,并将从 community.crypto 3.0.0 中删除。

选项

  • 1

  • 2

request_timeout

整数

在 community.crypto 2.3.0 中添加

Ansible 应等待 ACME API 响应的时间。

此超时应用于所有 HTTP(S) 请求(HEAD、GET、POST)。

默认值: 10

retrieve_orders

字符串

是否检索订单 URL 列表或订单对象(如果 ACME 服务器提供)。

值为 ignore 将不会获取订单列表。

如果该值不是 ignore 并且 ACME 服务器支持订单,则始终会填充 order_uris 返回值。只有当此选项设置为 object_list 时,才会返回 orders 返回值。

目前,Let's Encrypt 不返回订单,因此 orders 的结果将始终为空。

选项

  • "ignore" ←(默认值)

  • "url_list"

  • "object_list"

select_crypto_backend

字符串

确定要使用的加密后端。

默认选项是 auto,它会尝试使用 cryptography (如果可用),并回退到 openssl

如果设置为 openssl,将尝试使用 openssl 二进制文件。

如果设置为 cryptography,将尝试使用 cryptography 库。

选项

  • "auto" ←(默认值)

  • "cryptography"

  • "openssl"

validate_certs

布尔值

调用 ACME 目录时是否验证 TLS 证书。

警告: 应出于测试目的(例如,在针对本地 Pebble 服务器进行测试时)将其设置为 false

选项

  • false

  • true ←(默认值)

属性

属性

支持

描述

action_group

操作组: community.crypto.acme, acme

module_defaults 中使用 group/acmegroup/community.crypto.acme 为此模块设置默认值。

check_mode

支持:完整

此操作不会修改状态。

可以在 check_mode 中运行,并返回已更改的状态预测,而不会修改目标。

diff_mode

支持: 不适用

此操作不会修改状态。

当处于差异模式时,将返回有关已更改的内容(或可能需要在 check_mode 中更改的内容)的详细信息。

备注

注意

  • community.crypto.acme_account 模块允许修改、创建和删除 ACME 帐户。

  • 在 Ansible 2.8 之前,此模块被称为 acme_account_facts。用法没有改变。

  • 尽管选择的默认值允许将此模块与 Let’s Encrypt CA 一起使用,但原则上该模块可以与任何提供 ACME 端点的 CA 一起使用,例如 Buypass Go SSL

  • 到目前为止,ACME 模块仅由开发人员针对 Let's Encrypt(暂存和生产)、Buypass(暂存和生产)、ZeroSSL(生产)和 Pebble 测试服务器进行了测试。我们收到了社区的反馈,表明它们也适用于 InCommon 的 Sectigo ACME 服务。如果您在使用其他 ACME 服务器时遇到问题,请创建一个 issue 以帮助我们支持它。也欢迎您反馈未提及的 ACME 服务器确实有效。

  • 如果提供了足够新版本的 cryptography 库(有关详细信息,请参阅“要求”),则将使用它而不是 openssl 二进制文件。可以使用 select_crypto_backend 选项显式禁用或启用此功能。请注意,使用 openssl 二进制文件速度较慢且安全性较低,因为私钥内容始终必须存储在磁盘上(请参阅 account_key_content)。

另请参阅

另请参阅

community.crypto.acme_account

允许创建、修改或删除 ACME 帐户。

示例

- name: Check whether an account with the given account key exists
  community.crypto.acme_account_info:
    account_key_src: /etc/pki/cert/private/account.key
  register: account_data
- name: Verify that account exists
  ansible.builtin.assert:
    that:
      - account_data.exists
- name: Print account URI
  ansible.builtin.debug:
    var: account_data.account_uri
- name: Print account contacts
  ansible.builtin.debug:
    var: account_data.account.contact

- name: Check whether the account exists and is accessible with the given account key
  acme_account_info:
    account_key_content: "{{ acme_account_key }}"
    account_uri: "{{ acme_account_uri }}"
  register: account_data
- name: Verify that account exists
  ansible.builtin.assert:
    that:
      - account_data.exists
- name: Print account contacts
  ansible.builtin.debug:
    var: account_data.account.contact

返回值

常见返回值记录在此处这里,以下是此模块独有的字段

描述

account

字典

从 ACME 服务器检索的帐户信息。

已返回: 如果帐户存在

contact

列表 / elements=字符串

必须创建以进行验证的质询资源

已返回: 始终

示例: ["mailto:[email protected]", "tel:00123456789"]

orders

字符串

可以从中检索此帐户订单列表的 URL。

使用 retrieve_orders 选项查询此 URL 并检索完整的订单列表。

已返回: 始终

示例: "https://example.ca/account/1/orders"

public_account_key

字符串

作为 JSON Web Key 的公共帐户密钥。

已返回: 始终

示例: "{\"kty\":\"EC\",\"crv\":\"P-256\",\"x\":\"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4\",\"y\":\"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM\"}"

status

字符串

帐户的状态

已返回: 始终

只能返回

  • "valid"

  • "deactivated"

  • "revoked"

示例: "valid"

account_uri

字符串

ACME 帐户 URI,如果帐户不存在,则为 None。

已返回: 始终

exists

布尔值

帐户是否存在。

已返回: 始终

order_uris

列表 / elements=字符串

在 community.crypto 1.5.0 中添加

订单列表。

如果 retrieve_ordersurl_list,这将是一个 URL 列表。

如果 retrieve_ordersobject_list,则这将是一个对象列表。

返回: 如果账户存在,retrieve_orders 不为 ignore,且服务器支持订单列表

orders

列表 / 元素=字典

订单列表。

返回: 如果账户存在,retrieve_ordersobject_list,且服务器支持订单列表

授权

列表 / elements=字符串

此订单的授权 URL 列表。

返回: 成功时

证书

字符串

用于检索证书的 URL。

返回: 当证书已颁发时

错误

字典

如果在处理过程中发生错误,则包含有关错误的信息。

该字段的结构为问题文档 (RFC7807)。

返回: 当发生错误时

过期时间

字符串

订单的过期时间。

时间戳应按照 RFC3339 中所述的格式进行格式化。

只有当 orders[].statuspendingvalid 时,才需要在结果中包含此项。

返回: 当服务器给出过期日期时

完成

字符串

用于完成 ACME 订单的 URL。

返回: 成功时

标识符

列表 / 元素=字典

此订单所针对的标识符列表。

返回: 成功时

类型

字符串

标识符的类型。

返回: 成功时

只能返回

  • "dns"

  • "ip"

字符串

标识符的名称。主机名或 IP 地址。

返回: 成功时

通配符

布尔值

如果 orders[].identifiers[].value 实际上是通配符。如果此值为 true,则通配符前缀 *. 不包含在 orders[].identifiers[].value 中。

返回: 如果标识符是通配符,则必须包含此项

不晚于

字符串

证书中 notAfter 字段的请求值。

日期应按照 RFC3339 中所述的格式进行格式化。

服务器不一定返回此项。

返回: 当服务器返回此项时

不早于

字符串

证书中 notBefore 字段的请求值。

日期应按照 RFC3339 中所述的格式进行格式化。

服务器不一定返回此项。

返回: 当服务器返回此项时

status

字符串

订单的状态。

返回: 成功时

只能返回

  • "pending"(待处理)

  • "ready"(准备就绪)

  • "processing"(正在处理)

  • "valid"

  • "invalid"(无效)

作者

  • Felix Fontein (@felixfontein)