如何从脚本非交互地添加证书颁发机构 (CA) SSL 证书

如何从脚本非交互地添加证书颁发机构 (CA) SSL 证书

我有一个调用脚本的 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可能要做什么,然后自己做(通过脚本)。实际上并没有那么多。

  1. 将您的 .crt 证书复制到/usr/share/ca-certificates/your.domain.tld

  2. 将您添加的这些证书符号链接/usr/share/ca-certificates/your.domain.tld/etc/ssl/certificates/

  3. 确保/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
      
  4. 跑步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"

希望这对某人有帮助。

相关内容