community.crypto.openssl_csr 模块 – 生成 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
。
概要
请注意,如果现有 CSR 与模块的选项不匹配,或者似乎已损坏,则该模块会重新生成现有 CSR。 如果您担心这会覆盖您现有的 CSR,请考虑使用
backup
选项。此模块允许您(重新)生成 OpenSSL 证书签名请求。
此模块支持 subjectAltName、keyUsage、extendedKeyUsage、basicConstraints 和 OCSP Must Staple 扩展。
要求
以下要求需要在执行此模块的主机上满足。
cryptography >= 1.3
参数
参数 |
注释 |
---|---|
生成的 文件系统对象应具有的属性。 要获取支持的标志,请查看目标系统上 chattr 的手册页。 此字符串应包含与 lsattr 显示的顺序相同的属性。
|
|
将出现在证书签名请求的授权证书颁发者字段中的名称。 值必须以其选项为前缀。 (即, 示例: 如果指定,还必须指定 请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。 指定此选项主要对自签名证书或自己的 CA 有用。 请注意,仅当使用 仅当指定了 |
|
授权证书序列号。 如果指定,还必须指定 请注意,仅当使用 请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。 指定此选项主要对自签名证书或自己的 CA 有用。 仅当指定了 此选项接受一个 整数。 如果要将序列号作为冒号分隔的十六进制字符串提供,例如 |
|
授权密钥标识符,为十六进制字符串,其中两个字节以冒号分隔。 示例: 请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。 指定此选项主要对自签名证书或自己的 CA 有用。 请注意,仅当使用 仅当指定了 |
|
创建一个包含时间戳的备份文件,以便您在意外使用新文件覆盖原始 CSR 时能够恢复原始 CSR。 选项
|
|
指示基本约束,例如证书是否为 CA。 |
|
basicConstraints 扩展是否应被视为关键。 选项
|
|
证书签名请求主题的 commonName 字段。 |
|
证书签名请求主题的 countryName 字段。 |
|
从公钥创建主题密钥标识符。 请注意,商业 CA 可能会忽略该值,或者选择使用他们自己的值。指定此选项主要对自签名证书或自己的 CA 有用。 请注意,仅当使用 选项
|
|
允许指定一个或多个 CRL 分发点。 仅 |
|
关于 CRL 颁发者的信息。 |
|
描述如何检索 CRL。 与 示例: |
|
执行吊销检查时,此分发点可用于的原因列表。 选项
|
|
描述如何相对于 CRL 颁发者检索 CRL。 与 示例: 只有安装了 cryptography >= 1.6 时才能使用。 |
|
使用私钥签署证书签名请求时使用的摘要。 默认: |
|
证书签名请求主题的 emailAddress 字段。 |
|
对公钥可能被使用的允许目的的附加限制(例如客户端身份验证、服务器身份验证)。 |
|
extkeyUsage 扩展是否应被视为关键。 选项
|
|
是否应由此 Ansible 模块强制重新生成证书签名请求。 选项
|
|
应该拥有文件系统对象的所有者的组名,与提供给 chown 的名称相同。 如果未指定,则使用当前用户的当前组,除非您是 root 用户,在这种情况下,它可以保留以前的所有权。 |
|
这定义了证书中包含的密钥的目的(例如加密、签名、证书签名)。 |
|
keyUsage 扩展是否应被视为关键。 选项
|
|
证书签名请求主题的 localityName 字段。 |
|
生成的文件系统对象应具有的权限。 对于那些习惯于使用 /usr/bin/chmod 的人来说,请记住模式实际上是八进制数。您必须向 Ansible 提供足够的信息来正确解析它们。为了获得一致的结果,请引用八进制数(例如, 在不遵循这些规则的情况下向 Ansible 提供数字将最终得到一个十进制数,这将产生意想不到的结果。 从 Ansible 1.8 开始,模式可以指定为符号模式(例如, 如果未指定 如果未指定 指定 |
|
是否应将名称约束扩展视为关键。 选项
|
|
对于 CA 证书,这指定一个标识符列表,这些标识符描述了此 CA 不允许颁发证书的名称子树。 值必须以其选项为前缀。(即, |
|
对于 CA 证书,这指定一个标识符列表,这些标识符描述了此 CA 允许颁发证书的名称子树。 值必须以其选项为前缀。(即, |
|
OCSP Must Staple 扩展是否应被视为关键。 请注意,根据 RFC,此扩展不应标记为关键,因为不了解 OCSP Must Staple 的旧客户端需要拒绝此类证书(请参见 https://tools.ietf.org/html/rfc7633#section-4)。 选项
|
|
证书签名请求主题的 organizationName 字段。 |
|
证书签名请求主题的 organizationalUnitName 字段。 |
|
应该拥有文件系统对象的所有者的用户名,与提供给 chown 的名称相同。 如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留以前的所有权。 指定数字用户名将被假定为用户 ID 而不是用户名。请避免使用数字用户名以避免这种混淆。 |
|
将写入生成的 OpenSSL 证书签名请求的文件名。 |
|
签署证书签名请求时要使用的私钥的内容。 如果 |
|
私钥的密码短语。 如果私钥受密码保护,则这是必需的。 |
|
签署证书签名请求时要使用的私钥的路径。 如果 |
|
确定要使用的加密后端。 默认选项是 如果设置为 选项
|
|
SELinux 文件系统对象上下文的级别部分。 这是 MLS/MCS 属性,有时也称为 当设置为 |
|
SELinux 文件系统对象上下文的角色部分。 当设置为 |
|
SELinux 文件系统对象上下文的类型部分。 当设置为 |
|
SELinux 文件系统对象上下文的用户部分。 默认情况下,它会使用 当设置为 |
|
证书签名请求是否应该存在,如果状态与声明的不同,则采取行动。 选项
|
|
证书签名请求主题的 stateOrProvinceName 字段。 |
|
将出现在证书签名请求的主题名称字段中的键/值对。 如果需要使用相同的键指定多个值,请使用列表作为值。 如果组件的顺序很重要,请使用 与 |
|
要附加到证书签名请求的主题备用名称 (SAN) 扩展。 值必须以其选项为前缀。(这些是 请注意,如果没有指定 SAN,但是指定了通用名称,则通用名称将作为 SAN 添加,除非 更多信息请参考 https://tools.ietf.org/html/rfc5280#section-4.2.1.6。 |
|
是否应将 subjectAltName 扩展视为关键。 选项
|
|
作为十六进制字符串的主题密钥标识符,其中两个字节用冒号分隔。 示例: 请注意,商业 CA 会忽略此值,分别使用他们自己选择的值。 指定此选项主要对自签名证书或自己的 CA 有用。 请注意,仅当 请注意,仅当使用 |
|
字典列表,其中每个字典必须包含一个键/值对。此键/值对将出现在证书签名请求的主题名称字段中。 如果要在同一行中使用相同的键指定多个值,则可以使用列表作为值。 与 |
|
影响何时使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据。 默认情况下,此模块使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据,但有时系统的配置或损坏的方式会阻止这种情况发生。一个例子是 docker 挂载的文件系统对象,这些对象无法从容器内部以原子方式更新,只能以不安全的方式写入。 当原子操作失败时,此选项允许 Ansible 回退到更新文件系统对象的不安全方法(但是,它不会强制 Ansible 执行不安全的写入)。 重要提示!不安全的写入会受到竞争条件的影响,并可能导致数据损坏。 选项
|
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完全 |
可以在 |
|
支持: 完全 |
在差异模式下运行时,将返回已更改的内容的详细信息(或可能需要在 |
|
支持: 完全 |
使用 Ansible 的严格文件操作函数来确保正确的权限并避免数据损坏。 |
注释
注意
如果证书签名请求已存在,则将检查 subjectAltName、keyUsage、extendedKeyUsage 和 basicConstraints 是否仅包含请求的值,OCSP Must Staple 是否按请求,以及请求是否已由给定的私钥签名。
另请参阅
另请参阅
- community.crypto.openssl_csr_pipe
生成 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:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
common_name: www.ansible.com
- name: Generate an OpenSSL Certificate Signing Request with an inline key
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_content: "{{ private_key_content }}"
common_name: www.ansible.com
- name: Generate an OpenSSL Certificate Signing Request with a passphrase protected private key
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
privatekey_passphrase: ansible
common_name: www.ansible.com
- name: Generate an OpenSSL Certificate Signing Request with Subject information
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
country_name: FR
organization_name: Ansible
email_address: [email protected]
common_name: www.ansible.com
- name: Generate an OpenSSL Certificate Signing Request with subjectAltName extension
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
subject_alt_name: 'DNS:www.ansible.com,DNS:m.ansible.com'
- name: Generate an OpenSSL CSR with subjectAltName extension with dynamic list
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
subject_alt_name: "{{ item.value | map('regex_replace', '^', 'DNS:') | list }}"
with_dict:
dns_server:
- www.ansible.com
- m.ansible.com
- name: Force regenerate an OpenSSL Certificate Signing Request
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
force: true
common_name: www.ansible.com
- name: Generate an OpenSSL Certificate Signing Request with special key usages
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
common_name: www.ansible.com
key_usage:
- digitalSignature
- keyAgreement
extended_key_usage:
- clientAuth
- name: Generate an OpenSSL Certificate Signing Request with OCSP Must Staple
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
common_name: www.ansible.com
ocsp_must_staple: true
- name: Generate an OpenSSL Certificate Signing Request for WinRM Certificate authentication
community.crypto.openssl_csr:
path: /etc/ssl/csr/winrm.auth.csr
privatekey_path: /etc/ssl/private/winrm.auth.pem
common_name: username
extended_key_usage:
- clientAuth
subject_alt_name: otherName:1.3.6.1.4.1.311.20.2.3;UTF8:username@localhost
- name: Generate an OpenSSL Certificate Signing Request with a CRL distribution point
community.crypto.openssl_csr:
path: /etc/ssl/csr/www.ansible.com.csr
privatekey_path: /etc/ssl/private/ansible.com.pem
common_name: www.ansible.com
crl_distribution_points:
- full_name:
- "URI:https://ca.example.com/revocations.crl"
crl_issuer:
- "URI:https://ca.example.com/"
reasons:
- key_compromise
- ca_compromise
- cessation_of_operation
返回值
常用返回值记录在这里,以下是此模块独有的字段
键 |
描述 |
---|---|
指示证书是否属于 CA。 返回: changed 或 success。 示例: |
|
(当前或生成的)CSR 的内容。 返回: 如果 |
|
对公钥用途的额外限制。 返回: changed 或 success。 示例: |
|
生成的证书签名请求的路径。 返回: changed 或 success。 示例: |
|
公钥可以使用的目的。 返回: changed 或 success。 示例: |
|
CA 不能为其签署证书的排除子树列表。 返回: changed 或 success。 示例: |
|
允许为其签署证书的子树列表。 返回: changed 或 success。 示例: |
|
指示证书是否启用了 OCSP Must Staple 功能。 返回: changed 或 success。 示例: |
|
生成 CSR 的 TLS/SSL 私钥的路径。 如果私钥已在 返回: changed 或 success。 示例: |
|
附加到 CSR 的主题元组列表。 返回: changed 或 success。 示例: |
|
此 CSR 有效的备用名称。 返回: changed 或 success。 示例: |