在运行使用自定义根 CA 签署流量的反向代理时,是否可以按原样运行公开可用的容器?
示例:Zscaler 互联网安全
企业环境经常运行代理。
虽然可以将自定义根 CA 证书文件安装到自定义构建的 docker 映像中并成功运行容器(例如COPY ... custom certificate ...
and RUN ... install custom certificate ...
),但也可以将证书挂载到容器中,然后运行自定义“入口点”命令来安装证书,似乎不可能简单地告诉 Docker 信任主机信任的内容。
例如,当 Zscaler 使用其根 CA 签署响应时,docker 容器网络请求将无法验证响应,因为它们无法识别 Zscaler 根 CA。
设想:
- 在安装了 Zscaler 客户端的 Windows 计算机上运行公共 docker 映像
- 当容器启动时,如果它发出网络请求,它们会通过 Zscaler 路由
- 大多数甚至所有网络请求都将无法处理响应,因为容器操作系统和工具不信任 Zscaler 证书
当 Docker Compose 或 Kubernetes Helm 等工具尝试一次运行多个容器并且其中许多容器需要网络(当然)时,这个问题就会突出显示。
在遥远的将来,可能会使用诸如 OCI 钩子之类的东西。