在企业局域网上运行 docker build 时出现 x509 错误

在企业局域网上运行 docker build 时出现 x509 错误

该问题特别适用于 Mac 版 Docker Desktop。

我们的公司网络在所有 SSL 请求中插入中间证书。当我docker build在连接到网络的情况下运行时,这会导致以下错误:

failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch anonymous token: Get "https://auth.docker.io/token?scope=repository%3Aamazon%2Faws-cli%3Apull&service=registry.docker.io": x509: certificate signed by unknown authority

我尝试添加包含我们中级证书的包,~/.docker/certs.d/auth.docker.io:443/ca.crt但这并没有解决问题。我尝试了几种auth.docker.io:443目录命名方法。

如果我在 Linux 机器上,我会将证书附加/etc/pki/tls/certs/ca-bundle.crtdockerd 文档但 Mac 上没有这个功能。据我所知,Docker for Mac应该导入钥匙串中的所有证书,但我看到的行为表明并非如此。除了完全禁用 SSL 验证之外,我不知道还能尝试什么,但这肯定不是首选解决方案。

答案1

对于我来说,将注册表添加到不安全选项不起作用,因此我这样做:

我使用 Chrome,

首先,尝试通过浏览器连接您的注册表,只需在地址栏中输入 https:// 地址,然后输入

点击地址旁边的“储物柜”图标,打开证书链窗口,如下图所示

通过将大图标(我在图片上标记的)拖到查找器中,下载所有看起来不受信任的证书(在链中逐一下载)

不受信任的证书将出现在链中,其中带有红色圆圈内的 x(见图)

在此处输入图片描述

之后,您应该在 Finder 中获取带有这些证书的文件

使用以下命令将它们全部添加到系统链中:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain downloaded_cert_file

对所有下载的证书文件重复上述命令

接下来输入 [command 键 + 空格键] 并搜索 Keychain Access

打开钥匙串并转到系统证书

找到已安装的证书,双击打开(可能仍然会出现一个里面有“x”的红色圆圈)

点击“信任”下拉箭头

将“使用此证书时”从使用系统默认值更改为始终信任(见下图)

在此处输入图片描述

退出窗口,系统将提示用户并保存用户特定的证书设置

重启 Docker 守护进程

答案2

Mac 的流程是更新 macOS 钥匙串:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

完成此操作后,文档中会出现一个重要提示:

注意:对钥匙串或 ~/.docker/certs.d 目录进行任何更改后,您需要重新启动 Docker Desktop,以使更改生效。

相关内容