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
参数
参数 |
注释 |
---|---|
结果文件系统对象应具有的属性。 要获取支持的标志,请查看目标系统上 chattr 的手册页。 此字符串应包含与 lsattr 显示的顺序相同的属性。 默认情况下假定 |
|
应该拥有文件系统对象的用户组的名称,就像提供给 chown 的一样。 如果未指定,它将使用当前用户的当前组,除非您是 root 用户,在这种情况下它可以保留之前的属主。 |
|
指定在签署公钥时的密钥标识。服务器在证书用于身份验证时记录的标识符。 |
|
是否应忽略 但是,如果新证书满足生成/重新生成所需的任何其他条件,这些值仍将应用于新证书。 选项
|
|
结果文件系统对象应具有的权限。 对于那些习惯于 /usr/bin/chmod 的人,请记住模式实际上是八进制数。您必须给 Ansible 足够的信息来正确解析它们。为了获得一致的结果,请引用八进制数(例如, 如果未遵循这些规则中的任何一个,则为 Ansible 提供一个数字将最终得到一个十进制数字,这将产生意外的结果。 从 Ansible 1.8 开始,该模式可以指定为符号模式(例如, 如果未指定 如果未指定 指定 |
|
指定签名密钥时使用的证书选项。用户证书的有效选项包括:
目前,没有选项对主机密钥有效。 |
|
应该拥有文件系统对象的用户的名称,就像输入给 chown 的那样。 如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留之前的所属关系。 指定数字用户名将被视为用户 ID 而不是用户名。避免使用数字用户名以避免这种混淆。 |
|
包含证书的文件路径。 |
|
要使用驻留在 PKCS#11 令牌上的签名密钥,请将其设置为与令牌一起使用的共享库的名称(或完整路径)。通常是 如果设置了此项,则 |
|
证书可能仅限于对一组主体(用户/主机)名称有效。默认情况下,生成的证书对所有用户或主机有效。 |
|
公钥的路径,该公钥将使用签名密钥进行签名,以生成证书。 如果 |
|
当 当 当 当
选项
|
|
SELinux 文件系统对象上下文的级别部分。 这是 MLS/MCS 属性,有时称为 设置为 |
|
指定证书序列号。当证书用于身份验证时,服务器会记录该序列号。证书序列号可用于 KeyRevocationList。检查时可以省略序列号,但对于新证书必须再次指定。注意: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。有效格式为: 仅 OpenSSH 7.7 及更高版本支持值 要在与现有证书进行比较时忽略此值,请设置 如果 |
|
证书有效的截止时间点。时间可以指定为相对时间或绝对时间戳。时间将始终解释为 UTC。有效格式为: 要在与现有证书进行比较时忽略此值,请设置 如果 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完整 |
可以在 |
|
支持: 完整 |
在 diff 模式下运行时,将返回已更改(或可能需要在 |
|
支持: 完整 |
使用 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
返回值
通用返回值记录在此处,以下是此模块独有的字段
键 |
描述 |
---|---|
证书的路径 返回: 已更改或成功 示例: |
|
有关证书的信息。 返回: 已更改或成功 |
|
证书的类型(主机或用户) 返回: 已更改或成功 示例: |