非托管Docker容器自动信任自定义根CA反向代理流量的可行性问询
在运行使用自定义根CA对流量签名的反向代理时,能否直接运行公开可用的容器而无需修改?
典型示例:Zscaler互联网安全
企业环境通常会部署代理服务做流量安全管控。
目前已验证可行的方案都需要对容器或启动逻辑做调整:
- 自定义构建Docker镜像,将根CA证书打包到镜像内,可通过
COPY ... custom certificate ...和RUN ... install custom certificate ...指令完成证书安装,打包后的镜像可正常运行 - 启动容器时将主机上的根CA证书挂载到容器内,再通过自定义entrypoint命令执行证书安装操作
当前Docker原生没有提供直接复用主机受信证书列表的配置能力,因此无法直接运行未做修改的公开镜像。比如当Zscaler使用自有根CA对HTTPS响应签名时,容器内发起的网络请求会因为无法识别该根CA,导致TLS响应校验失败。
典型的问题场景如下:
- 在安装了Zscaler客户端的Windows设备上运行公开Docker镜像
- 容器启动后发起的网络请求会被路由经过Zscaler代理
- 绝大多数甚至全部网络请求都无法正常处理响应,因为容器内部的操作系统和内置工具不信任Zscaler的根CA证书
如果使用Docker Compose、Kubernetes Helm这类编排工具同时运行多个需要网络访问的容器时,该问题会格外突出。
远期或许可以通过OCI钩子这类底层能力,实现无需修改公开镜像即可让容器自动信任主机侧自定义根CA的需求。
内容的提问来源于stack exchange,提问作者Eric Swanson
相关产品推荐
相关产品推荐

