我有一个调用脚本的 ansible 游戏。该脚本将我的私钥基础设施的 .crt 文件复制到 /usr/share/ca-certificates/my.domain.tld
然后脚本调用:
sudo update-ca-certificates
sudo dpkg-reconfigure ca-certificates
dpkg-reconfigure 调用会导致出现一个 curses 界面,要求我专门选择并启用我想要启用的证书。我需要找到一种非交互方式运行的方法。肯定有解决方案,但我搜索了一段时间,到目前为止还没有找到任何可行的方法。
请提供极好的帮助!
答案1
我发现了很多很酷的东西,可以通过改变 debconf 数据库来预先设置 UI 中的问题,但实际上它并没有改变任何东西。
最终,让我成功的方法就是弄清楚dpkg-reconfigure
可能要做什么,然后自己做(通过脚本)。实际上并没有那么多。
将您的 .crt 证书复制到
/usr/share/ca-certificates/your.domain.tld
将您添加的这些证书符号链接
/usr/share/ca-certificates/your.domain.tld
到/etc/ssl/certificates/
确保
/etc/ca-certificates.conf
您的证书包含一行,例如:your.domain.tld/issuing_ca.crt your.domain.tld/root_ca.crt
请注意,这些行不以 开头
!
,否则将取消选择这些证书。对于这一步,我使用了:sed -i ...
确保这些行没有前导!
bash 条件检查这些行是否存在,例如:
if [ ! grep -q "your.domain.tld/issuing_ca.crt" /etc/ca-certificates.conf ] ; then
如果这些行不存在,我会添加它们:
cat [filename] >> /etc/ca-certificates.conf
跑步
sudo update-ca-certificates
。(这将把所有证书合并
/etc/ssl/certs
成一个ca-certificates.crt
可供应用程序使用的证书。)
答案2
根据过去的问题,您应该能够将它们复制到 /usr/local/share/ca-certificates/(NewFolder),然后sudo update-ca-certificates
才能使它们可用于您的应用程序
答案3
在 /usr/local/share/ca-certificates 中创建一个文件夹并将我的 ca 证书复制到其中对我有用(感谢 Roy Abernathy)这是我的剧本的相关部分:
- name: Create directory mycert in /usr/local/share/ca-certificates/
file:
path: //usr/local/share/ca-certificates/mycert
state: directory
- name: Copy certificate to /usr/local/share/ca-certificates/mycert
copy:
src: certificate.cer
dest: /usr/local/share/ca-certificates/dcpud/certificate.crt
owner: root
group: root
mode: 0644
- name: Update CA certificate trust
shell: /bin/bash -c "update-ca-certificates"
希望这对某人有帮助。