使用非托管 Docker 容器内的自定义根 CA 自动信任反向代理流量

Eri*_*son 5 ssl ssl-certificate docker zscaler

在运行使用自定义根 CA 对流量进行签名的反向代理时,是否可以按原样运行公开可用的容器?

示例:Zscaler 互联网安全

企业环境通常运行代理。

虽然可以将自定义根 CA 证书文件安装到自定义构建的 docker 映像中并成功运行容器(例如COPY ... custom certificate ...RUN ... install custom certificate ...),也可以将证书安装到容器中,然后运行自定义“entrypoint”命令来安装证书后,似乎不可能简单地告诉 Docker 信任主机信任的内容。

例如,当 Zscaler 使用其根 CA 签署响应时,docker 容器网络请求将无法验证响应,因为它们无法识别 Zscaler 根 CA。

设想:

  1. 在安装了 Zscaler 客户端的 Windows 计算机上运行公共 docker 映像
  2. 当容器启动时,如果发出网络请求,它们将通过 Zscaler 进行路由
  3. 大多数甚至所有网络请求都将无法处理响应,因为容器操作系统和工具不信任 Zscaler 证书

当 Docker Compose 或 Kubernetes Helm 等工具尝试一次运行多个容器并且其中许多容器需要网络(当然)时,这个问题就会凸显出来。

在遥远的将来,可能会使用 OCI hooks 之类的东西。