community.crypto.openssl_csr_pipe 模块 – 生成 OpenSSL 证书签名请求 (CSR)

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.crypto。您需要进一步的要求才能使用此模块,请参阅 要求 以了解详细信息。

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

community.crypto 1.3.0 中的新增功能

概要

  • 请注意,如果现有的 CSR 与模块的选项不匹配,或者如果它似乎已损坏,则该模块会重新生成它。

  • 此模块允许(重新)生成 OpenSSL 证书签名请求。

  • 此模块支持 subjectAltName、keyUsage、extendedKeyUsage、basicConstraints 和 OCSP Must Staple 扩展。

要求

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

  • cryptography >= 1.3

参数

参数

注释

authority_cert_issuer

列表 / 元素=字符串

将出现在证书签名请求的颁发机构证书颁发者字段中的名称。

值必须以其选项为前缀。(即 emailURIDNSRIDIPdirNameotherName 以及特定于您的 CA 的选项)

示例:DNS:ca.example.org

如果指定,则还必须指定 authority_cert_serial_number

请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。指定此选项主要用于自签名证书或您自己的 CA。

请注意,仅当使用 cryptography 后端时才支持此功能!

只有在指定了 authority_key_identifierauthority_cert_issuerauthority_cert_serial_number 中的至少一个时,才会添加 AuthorityKeyIdentifier 扩展。

authority_cert_serial_number

整数

颁发机构证书序列号。

如果指定,则还必须指定 authority_cert_issuer

请注意,仅当使用 cryptography 后端时才支持此功能!

请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。指定此选项主要用于自签名证书或您自己的 CA。

只有在指定了 authority_key_identifierauthority_cert_issuerauthority_cert_serial_number 中的至少一个时,才会添加 AuthorityKeyIdentifier 扩展。

此选项接受一个**整数**。如果要以冒号分隔的十六进制字符串(例如 11:22:33)的形式提供序列号,则需要使用 community.crypto.parse_serial 将其转换为整数。

authority_key_identifier

字符串

颁发机构密钥标识符,以十六进制字符串的形式表示,其中两个字节用冒号分隔。

示例:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33

请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。指定此选项主要用于自签名证书或您自己的 CA。

请注意,仅当使用 cryptography 后端时才支持此功能!

只有在指定了 authority_key_identifierauthority_cert_issuerauthority_cert_serial_number 中的至少一个时,才会添加 AuthorityKeyIdentifier 扩展。

basic_constraints

别名:basicConstraints

列表 / 元素=字符串

指示基本约束,例如证书是否为 CA。

basic_constraints_critical

别名:basicConstraints_critical

布尔值

是否应将 basicConstraints 扩展视为关键扩展。

选择

  • false ← (默认)

  • true

common_name

别名: CN, commonName

字符串

证书签名请求主题的 commonName 字段。

content

字符串

现有的 CSR。

country_name

别名: C, countryName

字符串

证书签名请求主题的 countryName 字段。

create_subject_key_identifier

布尔值

从公钥创建主体密钥标识符。

请注意,商业 CA 可能会忽略该值,或者使用他们自己选择的值。指定此选项主要用于自签名证书或自有 CA。

请注意,仅当使用 cryptography 后端时才支持此功能!

选择

  • false ← (默认)

  • true

crl_distribution_points

list / elements=dictionary

在 community.crypto 1.4.0 中添加

允许指定一个或多个 CRL 分发点。

cryptography 后端支持。

crl_issuer

列表 / 元素=字符串

关于 CRL 颁发者的信息。

full_name

列表 / 元素=字符串

描述如何检索 CRL。

crl_distribution_points[].relative_name 互斥。

示例:URI:https://ca.example.com/revocations.crl

reasons

列表 / 元素=字符串

执行吊销检查时,可用于此分发点的原因列表。

选择

  • "key_compromise"

  • "ca_compromise"

  • "affiliation_changed"

  • "superseded"

  • "cessation_of_operation"

  • "certificate_hold"

  • "privilege_withdrawn"

  • "aa_compromise"

relative_name

列表 / 元素=字符串

描述如何相对于 CRL 颁发者检索 CRL。

crl_distribution_points[].full_name 互斥。

示例:/CN=example.com

仅当安装了 cryptography >= 1.6 时才能使用。

digest

字符串

使用私钥签署证书签名请求时使用的摘要。

默认值: "sha256"

email_address

别名: E, emailAddress

字符串

证书签名请求主题的 emailAddress 字段。

extended_key_usage

别名: extKeyUsage, extendedKeyUsage

列表 / 元素=字符串

对公钥允许使用的用途的附加限制(例如客户端身份验证、服务器身份验证)。

extended_key_usage_critical

别名: extKeyUsage_critical, extendedKeyUsage_critical

布尔值

extKeyUsage 扩展是否应被视为关键。

选择

  • false ← (默认)

  • true

key_usage

别名: keyUsage

列表 / 元素=字符串

这定义了证书中包含的密钥的用途(例如加密、签名、证书签名)。

key_usage_critical

别名: keyUsage_critical

布尔值

keyUsage 扩展是否应被视为关键。

选择

  • false ← (默认)

  • true

locality_name

别名: L, localityName

字符串

证书签名请求主题的 localityName 字段。

name_constraints_critical

布尔值

名称约束扩展是否应被视为关键。

选择

  • false ← (默认)

  • true

name_constraints_excluded

列表 / 元素=字符串

对于 CA 证书,这指定一个标识符列表,这些标识符描述了此 CA 不允许颁发证书的名称子树。

值必须以其选项为前缀。(即,emailURIDNSRIDIPdirNameotherName,以及特定于您的 CA 的选项)。

name_constraints_permitted

列表 / 元素=字符串

对于 CA 证书,这指定一个标识符列表,这些标识符描述了此 CA 允许颁发证书的名称子树。

值必须以其选项为前缀。(即,emailURIDNSRIDIPdirNameotherName,以及特定于您的 CA 的选项)。

ocsp_must_staple

别名: ocspMustStaple

布尔值

表示证书应包含 OCSP Must Staple 扩展 (https://tools.ietf.org/html/rfc7633)。

选择

  • false ← (默认)

  • true

ocsp_must_staple_critical

别名: ocspMustStaple_critical

布尔值

OCSP Must Staple 扩展是否应被视为关键。

请注意,根据 RFC,此扩展不应标记为关键,因为不了解 OCSP Must Staple 的旧客户端必须拒绝此类证书(请参阅 https://tools.ietf.org/html/rfc7633#section-4)。

选择

  • false ← (默认)

  • true

organization_name

别名: O, organizationName

字符串

证书签名请求主题的 organizationName 字段。

organizational_unit_name

别名: OU, organizationalUnitName

字符串

证书签名请求主题的 organizationalUnitName 字段。

privatekey_content

字符串

用于签署证书签名请求的私钥内容。

必须指定 privatekey_pathprivatekey_content,但不能同时指定两者。

privatekey_passphrase

字符串

私钥的密码。

如果私钥受密码保护,则这是必需的。

privatekey_path

路径

用于签署证书签名请求的私钥路径。

必须指定 privatekey_pathprivatekey_content,但不能同时指定两者。

select_crypto_backend

字符串

确定要使用的加密后端。

默认选项是 auto,如果可用,它会尝试使用 cryptography

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

选择

  • "auto" ← (默认)

  • "cryptography"

state_or_province_name

别名: ST, stateOrProvinceName

字符串

证书签名请求主题的 stateOrProvinceName 字段。

subject

字典

证书签名请求主题名称字段中将存在的键/值对。

如果您需要为同一个键指定多个值,请使用列表作为值。

如果组件的顺序很重要,请使用 subject_ordered

subject_ordered 互斥。

subject_alt_name

别名: subjectAltName

列表 / 元素=字符串

附加到证书签名请求的主题备用名称 (SAN) 扩展。

值必须以其选项为前缀。(这些是 emailURIDNSRIDIPdirNameotherName,以及特定于您的 CA 的选项)。

请注意,如果没有指定 SAN,但指定了通用名称,则通用名称将作为 SAN 添加,除非 use_common_name_for_san 设置为 false

更多信息请访问 https://tools.ietf.org/html/rfc5280#section-4.2.1.6

subject_alt_name_critical

别名: subjectAltName_critical

布尔值

subjectAltName 扩展是否应被视为关键。

选择

  • false ← (默认)

  • true

subject_key_identifier

字符串

主体密钥标识符为十六进制字符串,其中两个字节用冒号分隔。

示例:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33

请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。指定此选项主要用于自签名证书或您自己的 CA。

请注意,仅当 create_subject_key_identifierfalse 时才能使用此选项。

请注意,仅当使用 cryptography 后端时才支持此功能!

subject_ordered

list / elements=dictionary

在 community.crypto 2.0.0 中添加

一个字典列表,其中每个字典必须包含一个键/值对。此键/值对将存在于证书签名请求的主题名称字段中。

如果您想在一行中为同一个键指定多个值,则可以使用列表作为值。

subject 和任何其他主题字段选项互斥,例如 country_namestate_or_province_namelocality_nameorganization_nameorganizational_unit_namecommon_nameemail_address

use_common_name_for_san

别名: useCommonNameForSAN

布尔值

如果设置为 true,如果没有指定 SAN,则模块将使用 DNS: 前缀填充 subject_alt_name 中的通用名称。

选择

  • false

  • true ← (默认)

version

整数

证书签名请求的版本。

根据 RFC 2986,唯一允许的值是 1。

自 community.crypto 2.0.0 起,此选项不再接受不受支持的值。

选择

  • 1 ← (默认)

属性

属性

支持

描述

check_mode

支持: 完整

目前在检查模式下,私钥不会被(重新)生成,只会设置更改状态。这将在 community.crypto 3.0.0 中更改。

从 community.crypto 3.0.0 开始,该模块将忽略检查模式,并且始终表现得好像检查模式未激活。如果您认为这会破坏您对此模块的使用情况,请在 community.crypto 存储库中创建一个问题。

可以在 check_mode 中运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持: 完整

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

说明

注意

  • 如果证书签名请求已存在,则会检查 subjectAltName、keyUsage、extendedKeyUsage 和 basicConstraints 是否仅包含请求的值,是否按要求启用了 OCSP Must Staple,以及请求是否由给定的私钥签名。

另请参阅

另请参阅

community.crypto.openssl_csr

生成 OpenSSL 证书签名请求 (CSR)。

community.crypto.x509_certificate

生成和/或检查 OpenSSL 证书。

community.crypto.x509_certificate_pipe

生成和/或检查 OpenSSL 证书。

community.crypto.openssl_dhparam

生成 OpenSSL Diffie-Hellman 参数。

community.crypto.openssl_pkcs12

生成 OpenSSL PKCS#12 存档。

community.crypto.openssl_privatekey

生成 OpenSSL 私钥。

community.crypto.openssl_privatekey_pipe

生成不访问磁盘的 OpenSSL 私钥。

community.crypto.openssl_publickey

从其私钥生成 OpenSSL 公钥。

community.crypto.openssl_csr_info

提供 OpenSSL 证书签名请求 (CSR) 的信息。

community.crypto.parse_serial 过滤器插件

将以冒号分隔的十六进制数字列表的序列号转换为整数。

示例

- name: Generate an OpenSSL Certificate Signing Request
  community.crypto.openssl_csr_pipe:
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
  register: result
- name: Print CSR
  ansible.builtin.debug:
    var: result.csr

- name: Generate an OpenSSL Certificate Signing Request with an inline CSR
  community.crypto.openssl_csr:
    content: "{{ lookup('ansible.builtin.file', '/etc/ssl/csr/www.ansible.com.csr') }}"
    privatekey_content: "{{ private_key_content }}"
    common_name: www.ansible.com
  register: result
- name: Store CSR
  ansible.builtin.copy:
    dest: /etc/ssl/csr/www.ansible.com.csr
    content: "{{ result.csr }}"
  when: result is changed

返回值

通用返回值在此处记录 此处,以下是此模块独有的字段

描述

basicConstraints

列表 / 元素=字符串

指示证书是否属于 CA

返回: changed 或 success

示例: ["CA:TRUE", "pathLenConstraint:0"]

csr

字符串

(当前或生成的)CSR 的内容。

返回: changed 或 success

extendedKeyUsage

列表 / 元素=字符串

对公钥用途的附加限制

返回: changed 或 success

示例: ["clientAuth"]

keyUsage

列表 / 元素=字符串

公钥可能用于的目的

返回: changed 或 success

示例: ["digitalSignature", "keyAgreement"]

name_constraints_excluded

列表 / 元素=字符串

CA 不能为其签名证书的排除子树列表。

返回: changed 或 success

示例: ["email:.com"]

name_constraints_permitted

列表 / 元素=字符串

用于签名证书的允许子树列表。

返回: changed 或 success

示例: ["email:.somedomain.com"]

ocsp_must_staple

布尔值

指示证书是否启用了 OCSP Must Staple 功能

返回: changed 或 success

示例: false

privatekey

字符串

为之生成 CSR 的 TLS/SSL 私钥的路径

如果私钥已在 privatekey_content 中提供,则将为 none

返回: changed 或 success

示例: "/etc/ssl/private/ansible.com.pem"

subject

list / elements=list

附加到 CSR 的主题元组列表

返回: changed 或 success

示例: [["CN", "www.ansible.com"], ["O", "Ansible"]]

subjectAltName

列表 / 元素=字符串

此 CSR 有效的备用名称

返回: changed 或 success

示例: ["DNS:www.ansible.com", "DNS:m.ansible.com"]

作者

  • Yanis Guenane (@Spredzy)

  • Felix Fontein (@felixfontein)