community.general.java_keystore 模块 – 以 JKS 格式创建 Java 密钥库

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:community.general.java_keystore

概要

  • 将 x509 证书及其私钥捆绑到 JKS 格式的 Java 密钥库中。

要求

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

参数

参数

注释

attributes

别名: attr

字符串

生成的 文件系统对象应具有的属性。

要获取支持的标志,请查看目标系统上 chattr 的手册页。

此字符串应包含与 lsattr 显示的顺序相同的属性。

默认情况下假定为 = 运算符,否则需要在字符串中包含 +- 运算符。

certificate

字符串

用于创建密钥库的证书的内容。

如果提供的证书的指纹与密钥库中捆绑的证书的指纹不匹配,则使用提供的证书重新生成密钥库。

需要 certificatecertificate_path 中的一个。

certificate_path

路径

在 community.general 3.0.0 中添加

用于创建密钥库的证书的位置。

如果提供的证书的指纹与密钥库中捆绑的证书的指纹不匹配,则使用提供的证书重新生成密钥库。

需要 certificatecertificate_path 中的一个。

dest

path / required

生成的密钥库的绝对路径。

force

布尔值

即使密钥库已存在也会创建密钥库。

选项

  • false ← (默认)

  • true

group

字符串

应该拥有 jks 文件的组的名称。

keystore_type

字符串

在 community.general 3.3.0 中添加

Java 密钥库的类型。

当省略此选项且密钥库尚不存在时,该行为遵循 keytool 的默认存储类型,该类型取决于 Java 版本;Java 9 以来为 pkcs12,之前为 jks(如果新默认已向后移植到此版本,则也可能为 pkcs12)。

当省略此选项且密钥库已存在时,当前类型将保持不变,除非另一个选项导致覆盖密钥库(在这种情况下,此选项的行为与创建密钥库时相同)。

当设置 keystore_type 时,如果密钥库尚不存在,则会使用此类型创建密钥库,或者在不匹配的情况下覆盖以匹配给定的类型。

选项

  • "jks"

  • "pkcs12"

mode

任何

文件应具有的模式。

name

string / required

密钥库中证书的名称。

如果提供的名称在密钥库中不存在,模块将重新创建密钥库。此行为在 community.general 3.0.0 中发生了更改,在此之前,当名称不匹配时,模块会失败。

owner

字符串

应该拥有 jks 文件的用户名称。

password

string / required

用于保护密钥库的密码。

如果提供的密码无法解锁密钥库,模块将使用新的密码重新创建密钥库。此行为在 community.general 3.0.0 中发生了更改,在此之前,当密码不匹配时,模块会失败。

private_key

字符串

用于创建密钥库的私钥内容。

必须提供 private_keyprivate_key_path 中的一个。

private_key_passphrase

字符串

在 community.general 0.2.0 中添加

读取私钥时使用的密码(如果需要)。

private_key_path

路径

在 community.general 3.0.0 中添加

用于创建密钥库的私钥的位置。

必须提供 private_keyprivate_key_path 中的一个。

selevel

字符串

SELinux 文件系统对象上下文的 level 部分。

这是 MLS/MCS 属性,有时称为 range

当设置为 _default 时,如果策略中可用,则将使用策略的 level 部分。

serole

字符串

SELinux 文件系统对象上下文的 role 部分。

当设置为 _default 时,如果策略中可用,则将使用策略的 role 部分。

setype

字符串

SELinux 文件系统对象上下文的 type 部分。

当设置为 _default 时,如果策略中可用,则将使用策略的 type 部分。

seuser

字符串

SELinux 文件系统对象上下文的 user 部分。

默认情况下,它使用 system 策略(如果适用)。

当设置为 _default 时,如果策略中可用,则将使用策略的 user 部分。

ssl_backend

字符串

在 community.general 3.1.0 中添加

用于加载私钥和证书的后端。

选项

  • "openssl" ← (默认)

  • "cryptography"

unsafe_writes

布尔值

影响何时使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据。

默认情况下,此模块使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据,但有时系统的配置方式或只是损坏的方式会阻止这种情况。一个例子是 docker 挂载的文件系统对象,这些对象无法从容器内部进行原子更新,并且只能以不安全的方式写入。

当原子操作失败时,此选项允许 Ansible 回退到更新文件系统对象的不安全方法(但是,它不会强制 Ansible 执行不安全的写入)。

重要提示!不安全的写入会受到竞争条件的影响,并可能导致数据损坏。

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

check_mode

支持: 完全

可以在 check_mode 中运行,并返回已更改状态预测,而无需修改目标。

diff_mode

支持:

在 diff 模式下,将返回已更改的详细信息(或者在 check_mode 中可能需要更改的详细信息)。

备注

注意

另请参阅

另请参阅

community.crypto.openssl_pkcs12

生成 OpenSSL PKCS#12 存档。

community.general.java_cert

使用 keytool 从 Java 密钥库 (cacerts) 导入/删除证书。

示例

- name: Create a keystore for the given certificate/private key pair (inline)
  community.general.java_keystore:
    name: example
    certificate: |
      -----BEGIN CERTIFICATE-----
      h19dUZ2co2f...
      -----END CERTIFICATE-----
    private_key: |
      -----BEGIN RSA PRIVATE KEY-----
      DBVFTEVDVFJ...
      -----END RSA PRIVATE KEY-----
    password: changeit
    dest: /etc/security/keystore.jks

- name: Create a keystore for the given certificate/private key pair (with files on controller)
  community.general.java_keystore:
    name: example
    certificate: "{{ lookup('file', '/path/to/certificate.crt') }}"
    private_key: "{{ lookup('file', '/path/to/private.key') }}"
    password: changeit
    dest: /etc/security/keystore.jks

- name: Create a keystore for the given certificate/private key pair (with files on target host)
  community.general.java_keystore:
    name: snakeoil
    certificate_path: /etc/ssl/certs/ssl-cert-snakeoil.pem
    private_key_path: /etc/ssl/private/ssl-cert-snakeoil.key
    password: changeit
    dest: /etc/security/keystore.jks

返回值

通用返回值在此处 文档化,以下是此模块特有的字段

描述

cmd

字符串

为完成操作而执行的命令

返回: 已更改和失败

示例: "/usr/bin/openssl x509 -noout -in /tmp/user/1000/tmp8jd_lh23 -fingerprint -sha256"

err

字符串

给定命令出错后,keytool/openssl 命令的 stderr 输出。

返回: 失败

示例: "Keystore password is too short - must be at least 6 characters "

msg

字符串

执行给定命令后,keytool/openssl 命令的 stdout 输出或错误。

返回: 已更改和失败

示例: "Unable to find the current certificate fingerprint in ..."

rc

整数

keytool/openssl 命令执行返回值

返回: 已更改和失败

示例: 0

作者

  • Guillaume Grossetie (@Mogztter)

  • quidame (@quidame)