community.crypto.openssh_cert 模块 – 生成 OpenSSH 主机或用户证书。
注意
此模块是 community.crypto 集合 (版本 2.22.3) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.crypto
。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 playbook 中使用它,请指定:community.crypto.openssh_cert
。
概要
生成和重新生成 OpenSSH 主机或用户证书。
要求
在执行此模块的主机上需要以下要求。
ssh-keygen
参数
参数 |
注释 |
---|---|
生成的 filesystem 对象应具有的属性。 要获取支持的标志,请查看目标系统上 此字符串应按 假定 |
|
应拥有 filesystem 对象的组的名称,就像提供给 如果未指定,则它使用当前用户的当前组,除非您是 root 用户,在这种情况下,它可以保留以前的拥有权。 |
|
签名公钥时指定密钥标识。服务器在使用证书进行身份验证时记录的标识符。 |
|
生成的 filesystem 对象应具有的权限。 对于习惯使用 向 Ansible 提供不遵循上述任何规则的数字将导致十进制数,这将产生意外的结果。 从 Ansible 1.8 开始,模式可以指定为符号模式(例如, 如果未指定 如果未指定 指定 |
|
签名密钥时指定证书选项。对用户证书有效的选项是
目前,主机密钥不接受任何选项。 |
|
应该拥有文件系统对象的用户名称,如同传递给 如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留之前的拥有者。 指定数字用户名将被认为是用户 ID 而不是用户名。避免使用数字用户名以避免此混淆。 |
|
包含证书的文件路径。 |
|
要使用驻留在 PKCS#11 令牌上的签名密钥,请将其设置为与令牌一起使用的共享库的名称(或完整路径)。通常为 如果设置了此选项,则需要 |
|
证书可以限制为对一组主体(用户/主机)名称有效。默认情况下,生成的证书对所有用户或主机有效。 |
|
将使用签名密钥签名的公钥路径,用于生成证书。 如果 |
|
当设置为 当设置为 当设置为 当设置为
选项
|
|
SELinux 文件系统对象上下文中的级别部分。 这是 MLS/MCS 属性,有时称为 当设置为 |
|
指定证书序列号。证书用于身份验证时,服务器会记录序列号。证书序列号可用于密钥吊销列表。可以省略序列号进行检查,但必须为新证书再次指定。注意:ssh-keygen 设置的默认值为 0。 此选项接受**整数**。如果要提供用冒号分隔的十六进制字符串作为序列号,例如 |
|
SELinux 文件系统对象上下文中的角色部分。 当设置为 |
|
SELinux 文件系统对象上下文中的类型部分。 当设置为 |
|
SELinux 文件系统对象上下文中的用户部分。 默认情况下,它使用 当设置为 |
|
从 OpenSSH 8.2 开始,RSA 密钥的 SHA-1 签名算法已被禁用, 对于非 RSA 注意:7.2 之前的 OpenSSH 版本不支持 RSA 密钥的 SHA-2 签名算法,7.3 之前的 OpenSSH 版本不支持证书的 SHA-2 签名算法。 更多信息请参见 https://www.openssh.com/txt/release-8.2。 选项
|
|
用于签署公钥以生成证书的私有 openssh 密钥的路径。 如果私钥位于 PKCS#11 令牌上( 如果 |
|
主机或用户证书是否存在,如果状态与声明的不同,则采取行动。 选项
|
|
影响何时使用原子操作来防止目标文件系统对象的数据损坏或不一致读取。 默认情况下,此模块使用原子操作来防止目标文件系统对象的数据损坏或不一致读取,但有时系统的配置方式或损坏方式会阻止此操作。一个示例是 docker 挂载的文件系统对象,无法从容器内部以原子方式更新,只能以不安全的方式写入。 此选项允许 Ansible 在原子操作失败时回退到不安全的文件系统对象更新方法(但是,它不会强制 Ansible 执行不安全写入)。 重要!不安全写入容易出现竞争条件,并可能导致数据损坏。 选项
|
|
ssh-keygen 是否应使用驻留在 ssh-agent 中的 CA 密钥。 选项
|
|
检查证书在特定时间点是否有效。如果无效,则将重新生成证书。时间始终解释为 UTC。主要用于 |
|
证书有效起始时间点。时间可以指定为相对时间或绝对时间戳。时间始终解释为 UTC。有效的格式为: 值 要在与现有证书进行比较时忽略此值,请设置 如果 |
|
证书有效截止时间点。时间可以指定为相对时间或绝对时间戳。时间始终解释为 UTC。有效的格式为: 要在与现有证书进行比较时忽略此值,请设置 如果 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 |
|
支持:完全支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
|
支持:完全支持 |
使用 Ansible 的严格文件操作函数来确保正确的权限并避免数据损坏。 |
另请参见
另请参见
- community.crypto.parse_serial 过滤器插件
将序列号(作为以冒号分隔的十六进制数字列表)转换为整数。
示例
- name: Generate an OpenSSH user certificate that is valid forever and for all users
community.crypto.openssh_cert:
type: user
signing_key: /path/to/private_key
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: always
valid_to: forever
# Generate an OpenSSH host certificate that is valid for 32 weeks from now and will be regenerated
# if it is valid for less than 2 weeks from the time the module is being run
- name: Generate an OpenSSH host certificate with valid_from, valid_to and valid_at parameters
community.crypto.openssh_cert:
type: host
signing_key: /path/to/private_key
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: +0s
valid_to: +32w
valid_at: +2w
ignore_timestamps: true
- name: Generate an OpenSSH host certificate that is valid forever and only for example.com and examplehost
community.crypto.openssh_cert:
type: host
signing_key: /path/to/private_key
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: always
valid_to: forever
principals:
- example.com
- examplehost
- name: Generate an OpenSSH host Certificate that is valid from 21.1.2001 to 21.1.2019
community.crypto.openssh_cert:
type: host
signing_key: /path/to/private_key
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: "2001-01-21"
valid_to: "2019-01-21"
- name: Generate an OpenSSH user Certificate with clear and force-command option
community.crypto.openssh_cert:
type: user
signing_key: /path/to/private_key
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: always
valid_to: forever
options:
- "clear"
- "force-command=/tmp/bla/foo"
- name: Generate an OpenSSH user certificate using a PKCS#11 token
community.crypto.openssh_cert:
type: user
signing_key: /path/to/ca_public_key.pub
pkcs11_provider: libpkcs11.so
public_key: /path/to/public_key.pub
path: /path/to/certificate
valid_from: always
valid_to: forever
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
证书路径 返回:changed 或 success 示例: |
|
有关证书的信息。 返回:change 或 success |
|
证书的类型(主机或用户) 返回:changed 或 success 示例: |