自动找到正确的中间 CA 证书

Automatically find right intermediate CA certificate

我们使用 Puppet 配置多个集群 运行 Apache HTTPD 使用 Puppetlabs 的 Apache 模块。

所有证书都存储在 Puppet 已经可以访问的 git 存储库中(例如 puppet://files-host/path/to/certs/${fqdn}.crt)。

现在我们必须为每个使用的证书明确指定中间 CA 证书(ssl_chain apache class 中的变量)。

能否让Puppet自动找出正确的中间CA证书?在 "real" 脚本语言中,我将遍历所有 *.pem 文件并将主题与证书颁发者进行比较。但这在 Puppet 中如何工作?

我们不想将中间 CA 证书嵌入到所有证书中。

我找到了解决问题的方法。这不是最佳方式,但它似乎是 Puppet 托管基础设施的唯一方式。

所有中间 CA 证书都位于 git 存储库中的单个目录中,Puppet 会将文件夹的全部内容放入托管主机(设置 "recursive" 和 "purge" 文件资源的属性为真)。

每个证书和密钥文件也使用文件资源进行部署。证书文件的文件资源将通知执行 shell script 的 exec 资源,它将正确的 CA 证书符号链接到静态文件路径(即 /etc/ssl/private/my-domain.pem -> /etc/ssl/ca/some-ca.pem。所以每个 FQDN 有三个文件(fqdn.crt、fqdn.key 和 fqdn.pem)。