使用Ansible java_cert从站点导入证书

问题描述

我正在考虑使用Ansible java_cert模块从受信任的站点导入证书。

使用bash可以通过以下方式完成

echo -n | openssl s_client -connect sh.1.1.1.3.nip.io:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/nipio.pem
/usr/lib/jvm/jdk-8u192/jre/bin/keytool -importcert -noprompt -keystore /usr/lib/jvm/jdk-8u192/jre/lib/security/cacerts -storepass changeit -alias 'nipio' -file /tmp/nipio.pem

足够容易。当我检查时,证书在密钥库中

/usr/lib/jvm/jdk-8u192/jre/bin/keytool -list -keystore /usr/lib/jvm/jdk-8u192/jre/lib/security/cacerts -storepass changeit | grep nipio

根据我对Ansible java_cert的理解,应使用以下Ansible YAML代码来实现相同的目的

- java_cert:
    cert_alias: nipio
    cert_url: sh.1.1.1.3.nip.io
    cert_port: 443
    keystore_path: /usr/lib/jvm/jdk-8u192/jre/lib/security/cacerts
    keystore_pass: changeit
    executable: /usr/lib/jvm/jdk-8u192/jre/bin/keytool
    state: present

每次运行Ansible时,我的任务都会“更改”,这表明Ansible正在更新密钥库。但是证书不会“存在”而是丢失。

TASK [cacerts : Import trusted sites] ****************************
changed: [bitbucket] => (item={u'url': u'sh.1.1.1.3.nip.io',u'port': 443,u'name': u'nipio'})

该命令有一个返回值,表明该命令运行时没有任何导入内容

cmd': u\"/usr/lib/jvm/jdk-8u192/jre/bin/keytool -importcert -noprompt -keystore '/usr/lib/jvm/jdk-8u192/jre/lib/security/cacerts' -storepass '********' -alias 'nipio' \"

这是java_cert的已知问题吗?这应该如何工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)