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

路径 / 必需

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

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

字符串 / 必需

密钥库中证书的名称。

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

owner

字符串

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

password

字符串 / 必需

应用于保护密钥库的密码。

如果提供的密码无法解锁密钥库,模块将使用新密码重新创建密钥库。此行为在 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 文件系统对象上下文的级别部分。

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

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

serole

字符串

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

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

setype

字符串

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

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

seuser

字符串

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

默认情况下,它使用 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 输出。

返回:失败

示例: "密钥库密码太短 - 必须至少 6 个字符 "

msg

字符串

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

返回:更改和失败

示例: "无法在 ... 中找到当前证书指纹"

rc

整数

keytool/openssl 命令执行返回值

返回:更改和失败

示例: 0

作者

  • Guillaume Grossetie (@Mogztter)

  • quidame (@quidame)