无法通过 SSL 使用 Docker for Windows 拉取 docker 映像



我使用docker引擎2.0.0.0-win77(28777(。在我的macOS上,我已经成功地从我公司的私有docker注册表中提取了映像。然后我想在我的Windows机器上执行此操作。在我做任何事情之前,我有:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: x509: certificate signed by unknown authority

然后,我将证书导入我的 Windows 用户证书存储。 现在我有:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: remote error: tls: handshake failure

这次失败后,我尝试了:

  • 已将证书导入到我的 Windows 全局证书存储中。
  • client.certclient.keyca.crt到我的 Windows 10 的文件复制到:

    • C:ProgramDataDockercerts.d<company.docker.url>
    • C:Users<user>.dockercerts.d<company.docker.url>

可悲的是,我仍然得到这个:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: remote error: tls: handshake failure

还有两点需要注意:

  • 如果我切换到Windows容器,我可以成功登录或拉取映像,只有在Linux容器版本时才会失败。
  • 我的
  • 私有证书由中间证书签名,中间证书包含在我的client.cert中。

我读过的一些参考资料:

  • 使用证书验证存储库客户端
  • 无法使用由中间证书签名的客户端证书连接到注册表
  • Docker Registry SSL CA 证书在 Windows 上的位置?
  • Docker for Windows 证书常见问题
  • 解答

我会尝试两件事:

  • 您是否尝试过:在拉取映像之前先登录 docker
  • 重新启动客户端并重复。

我在Windows上也有这个错误。就我而言,重新启动 docker 守护程序有所帮助。

您在建立与company.docker.url的 TLS 连接时遇到问题。可能出现的问题:

  • company.docker.url仅允许 Linux 容器不支持的密码。使用 https://github.com/drwetter/testssl.sh 测试company.docker.url,并将检测到的密码列表与支持的 Linux 容器密码列表进行比较。(我猜Linux容器=一些Hyper-V VM,您可以在其中直接调试TLS连接(。

  • 叶证书和中间证书的顺序必须按照证书文件中的特定顺序排列,以形成正确的证书链 - 来自 Golang doc https://golang.org/pkg/crypto/tls/#LoadX509KeyPair:

    证书

    文件可能包含叶证书后面的中间证书,以形成证书链。

当我上周搞砸 docker 时,程序说你需要 windows 10 专业版,而我只有家庭版,所以我无法让它工作,请检查你的 windows 10 版本作为建议。

就我而言,我们的 Sophos 防火墙阻止了访问。我直接连接到互联网,它起作用了。我不得不问我的同事,为什么它被封锁了。

最新更新