community.crypto.x509_certificate_pipe 模块 – 生成和/或检查 OpenSSL 证书
注意
此模块是 community.crypto 集合 (版本 2.22.3) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装它,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.crypto
。您需要其他要求才能使用此模块,请参阅 要求 了解详情。
要在 playbook 中使用它,请指定:community.crypto.x509_certificate_pipe
。
community.crypto 1.3.0 中的新增功能
摘要
它实现了证书提供程序的概念(
selfsigned
、ownca
、entrust
之一)。它使用 cryptography python 库与 OpenSSL 交互。
ownca
提供程序用于生成使用您自己的 CA(证书颁发机构)证书(自签名证书)签名的 OpenSSL 证书。此模块允许(重新)生成 OpenSSL 证书。
要求
执行此模块的主机需要以下要求。
cryptography >= 1.6(如果使用
selfsigned
或ownca
提供程序)
参数
参数 |
注释 |
---|---|
现有的证书。 |
|
用于生成此证书的证书签名请求 (CSR) 的内容。 这与 |
|
用于生成此证书的证书签名请求 (CSR) 的路径。 这与 |
|
用于向 Entrust 证书服务 (ECS) API 进行身份验证的客户端证书的私钥路径。 仅 如果提供程序为 |
|
用于向 Entrust 证书服务 (ECS) API 进行身份验证的客户端证书的路径。 仅 如果提供程序为 |
|
用于向 Entrust 证书服务 (ECS) API 进行身份验证的密钥(密码)。 仅 如果提供程序为 |
|
定义 Entrust 证书服务 (ECS) API 配置的规范文件的路径。 您可以使用此方法保留规范的本地副本,以避免每次使用模块时都下载它。 仅 默认值: |
|
用于向 Entrust 证书服务 (ECS) API 进行身份验证的用户名。 仅 如果提供程序为 |
|
指定请求的证书类型。 仅 选项
|
|
证书停止有效的时刻。 时间可以指定为相对时间或绝对时间戳。 有效的绝对时间格式是 有效的相对时间格式是 时间将始终解释为 UTC。 请注意,仅支持日期(日、月、年)来指定已颁发证书的到期日期。 在颁发之前,完整日期时间将调整为 EST (GMT -5:00),如果使用相对时间,则可能导致证书的到期日期比预期早一天。 最小证书有效期为 90 天,最大有效期为三年。 如果未指定此值,则证书将在签发日期后 365 天停止有效。 仅 请注意,此值**不**受 默认值: |
|
证书请求者的电子邮件地址(用于跟踪目的)。 仅 如果提供程序为 |
|
证书请求者的姓名(用于跟踪目的)。 仅 如果提供程序为 |
|
证书请求者的电话号码(用于跟踪目的)。 仅 如果提供程序为 |
|
即使证书已存在,也生成证书。 选项
|
|
是否应忽略“not before”和“not after”时间戳以进行幂等性检查。 使用相对时间戳(例如,目前使用 选项
|
|
从CA的证书创建权威密钥标识符。如果CSR提供了权威密钥标识符,则会忽略它。 如果可用,则从CA证书的主题密钥标识符生成权威密钥标识符。如果不可用,则将使用CA证书的公钥。 此参数仅由 请注意,只有在使用 选项
|
|
是否根据公钥创建主题密钥标识符 (SKI)。 值为 值为 值为 此参数仅由 请注意,只有在使用 选项
|
|
用于 此参数仅由 默认值: |
|
证书停止有效的时刻。 时间可以指定为相对时间或绝对时间戳。 时间将始终解释为 UTC。 有效格式为 如果未指定此值,则证书将在十年后停止有效。 请注意,此值**不用于确定是否应重新生成现有证书**。可以通过将 此参数仅由 在macOS 10.15及更高版本上,TLS服务器证书的有效期必须为825天或更短。详情请参见https://support.apple.com/en-us/HT210176。 默认值: |
|
证书开始有效的时刻。 时间可以指定为相对时间或绝对时间戳。 时间将始终解释为 UTC。 有效格式为 如果未指定此值,则证书将从现在开始有效。 请注意,此值**不用于确定是否应重新生成现有证书**。可以通过将 此参数仅由 默认值: |
|
用于 此参数仅由 |
|
现在它几乎总是 此参数仅由 默认值: |
|
签署证书时要使用的私钥的内容。 此参数与 |
|
用于 如果私钥受密码保护,则需要此参数。 |
|
签署证书时要使用的私钥的路径。 此参数与 |
|
用于生成/检索OpenSSL证书的提供程序的名称。
选项
|
|
确定要使用的加密后端。 默认选择是 如果设置为 选项
|
|
是否根据公钥创建主题密钥标识符 (SKI)。 值为 值为 值为 此参数仅由 请注意,只有在使用 选项
|
|
自签名证书时要使用的摘要算法。 此参数仅由 默认值: |
|
证书停止有效的时刻。 时间可以指定为相对时间或绝对时间戳。 时间将始终解释为 UTC。 有效格式为 如果未指定此值,则证书将在十年后停止有效。 请注意,此值**不用于确定是否应重新生成现有证书**。可以通过将 此参数仅由 在macOS 10.15及更高版本上,TLS服务器证书的有效期必须为825天或更短。详情请参见https://support.apple.com/en-us/HT210176。 默认值: |
|
证书开始有效的时刻。 时间可以指定为相对时间或绝对时间戳。 时间将始终解释为 UTC。 有效格式为 如果未指定此值,则证书将从现在开始有效。 请注意,此值**不用于确定是否应重新生成现有证书**。可以通过将 此参数仅由 默认值: |
|
现在它几乎总是 此参数仅由 默认值: |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 目前在检查模式下,不会(重新)生成私钥,只会设置更改状态。这将在community.crypto 3.0.0中更改。 从community.crypto 3.0.0开始,模块将忽略检查模式,并始终表现得好像检查模式未处于活动状态。如果您认为这会破坏您对该模块的使用情况,请在community.crypto存储库中创建一个问题。 |
可以在 |
|
支持:完全支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
注释
注意
所有ASN.1 TIME值都应按照YYYYMMDDHHMMSSZ模式指定。
指定的日期应为UTC。分钟和秒是必需的。
出于安全原因,当您使用
ownca
提供程序时,不应在目标机器上运行community.crypto.x509_certificate,而应在专用的CA机器上运行。建议不要将CA私钥存储在目标机器上。签名后,可以将证书移动到目标机器。对于
selfsigned
提供程序,csr_path
和csr_content
是可选的。如果未提供,则会创建一个没有任何信息(主题、主题替代名称、密钥用法等)的证书。
参见
另请参见
- community.crypto.x509_certificate
生成和/或检查OpenSSL证书。
- community.crypto.openssl_csr
生成OpenSSL证书签名请求 (CSR)。
- community.crypto.openssl_csr_pipe
生成OpenSSL证书签名请求 (CSR)。
- 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公钥。
示例
- name: Generate a Self Signed OpenSSL certificate
community.crypto.x509_certificate_pipe:
provider: selfsigned
privatekey_path: /etc/ssl/private/ansible.com.pem
csr_path: /etc/ssl/csr/ansible.com.csr
register: result
- name: Print the certificate
ansible.builtin.debug:
var: result.certificate
# In the following example, both CSR and certificate file are stored on the
# machine where ansible-playbook is executed, while the OwnCA data (certificate,
# private key) are stored on the remote machine.
- name: (1/2) Generate an OpenSSL Certificate with the CSR provided inline
community.crypto.x509_certificate_pipe:
provider: ownca
content: "{{ lookup('ansible.builtin.file', '/etc/ssl/csr/www.ansible.com.crt') }}"
csr_content: "{{ lookup('ansible.builtin.file', '/etc/ssl/csr/www.ansible.com.csr') }}"
ownca_cert: /path/to/ca_cert.crt
ownca_privatekey: /path/to/ca_cert.key
ownca_privatekey_passphrase: hunter2
register: result
- name: (2/2) Store certificate
ansible.builtin.copy:
dest: /etc/ssl/csr/www.ansible.com.crt
content: "{{ result.certificate }}"
delegate_to: localhost
when: result is changed
# In the following example, the certificate from another machine is signed by
# our OwnCA whose private key and certificate are only available on this
# machine (where ansible-playbook is executed), without having to write
# the certificate file to disk on localhost. The CSR could have been
# provided by community.crypto.openssl_csr_pipe earlier, or also have been
# read from the remote machine.
- name: (1/3) Read certificate's contents from remote machine
ansible.builtin.slurp:
src: /etc/ssl/csr/www.ansible.com.crt
register: certificate_content
- name: (2/3) Generate an OpenSSL Certificate with the CSR provided inline
community.crypto.x509_certificate_pipe:
provider: ownca
content: "{{ certificate_content.content | b64decode }}"
csr_content: "{{ the_csr }}"
ownca_cert: /path/to/ca_cert.crt
ownca_privatekey: /path/to/ca_cert.key
ownca_privatekey_passphrase: hunter2
delegate_to: localhost
register: result
- name: (3/3) Store certificate
ansible.builtin.copy:
dest: /etc/ssl/csr/www.ansible.com.crt
content: "{{ result.certificate }}"
when: result is changed
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
证书(当前或生成的)内容。 返回:已更改或成功 |