【发布时间】:2020-12-09 20:36:54
【问题描述】:
我在这里看到了另一个类似的问题:Docker distroless image how to add customize certificate to trust store?,但答案取决于在构建映像时是否有可用的证书,而我没有。
我正在寻找一种方法,在 Kubernetes pod 部署时将 CA 证书复制到基于 distroless 的容器映像中,并更新 CA 存储,以便证书被 openssl 视为有效。
我已经看到使用 kubernetes 卷我可以在部署时将 certificate.crt 共享到容器中(它将出现在容器内的 /usr/local/share/ca-certificates/cert.crt 中)但是那里distroless 内部没有可用的 update-ca-certificates 或 update-ca-trust 命令 - 那么如何确保正确更新 CA 存储/捆绑包以使证书被视为有效?请注意,不建议手动编辑/附加到证书包。我们正在寻找在 distroless 中执行 update-ca-certificates 的正确方法。
我看到了一些使用 alpine 基础镜像的示例,其中人们使用 apk 添加缺失的包,例如 ca-certificates,以便 update-ca-certificates 命令可用。在构建 distroless 映像时是否有类似的方法来实现这一点?
【问题讨论】:
-
您不能使用
docker cp将文件复制到OpenSSL 期望的位置吗?即/etc/ssl/certs/ca-certificates.crt(无论如何在Debian上)。您必须从该文件的通用版本开始并将您的证书附加到它。还是我误解了这个问题? -
问题是关于如何在通过 Kubernetes 启动容器时将我们的证书附加到该文件(以便它们受到信任)。正确的做法是将证书放在 /usr/local/share/ca-certificates 中,然后运行 update-ca-certificates 以更新捆绑包并确保它在商店中受信任。不建议手动更新文件。对于其他图像类型(例如 alpine),可以在构建时使用 apk 准备图像,以便在启动容器时获得正确的工具(更新-ca-certificates)。我们如何以同样的方式准备 distroless?
-
您是否考虑过使用Issuer?它适合您的用例吗?
-
这是个好主意,但我认为 certmanager 旨在创建/颁发新证书。在我的场景中,我需要信任一组现有的 CA 证书,并且不会创建自己的证书或颁发新证书。
标签: docker kubernetes certificate pki