Raf*_*sta 5 macos ssl docker alpine-linux docker-desktop
我在 MacOS 上通过 Docker Desktop 运行 Docker,在容器中安装软件包时遇到很多麻烦,因为它无法验证任何 ssl 证书。
\napk update例如,当我运行时,我收到此错误:
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz\n139797308250952:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1914:\nERROR: https://dl-cdn.alpinelinux.org/alpine/v3.14/main: Permission denied\nRun Code Online (Sandbox Code Playgroud)\n当我尝试bundle install:
Could not verify the SSL certificate for https://rubygems.org/.\nThere is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn\'t have the CA certificates needed for verification.\nRun Code Online (Sandbox Code Playgroud)\n甚至是一个简单的卷曲curl https://google.com.br:
curl: (60) SSL certificate problem: unable to get local issuer certificate\nMore details here: https://curl.se/docs/sslcerts.html\n\ncurl failed to verify the legitimacy of the server and therefore could not\nestablish a secure connection to it. To learn more about this situation and\nhow to fix it, please visit the web page mentioned above.\nRun Code Online (Sandbox Code Playgroud)\n更新
\n即使我在容器内安装了 ca 证书(如 @\xce\xb2.\xce\xb5\xce\xb7\xce\xbf\xce\xb9\xcf\x84.\xce\xb2\xce\xb5 所说),我仍然得到同样的错误SSL certificate problem: unable to get local issuer certificate。
添加到 Dockerfile 中的这一行,如 @\xce\xb2.\xce\xb5\xce\xb7\xce\xbf\xce\xb9\xcf\x84.\xce\xb2\xce\xb5 提到的:
\nRUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.15/main ca-certificates curl\nRun Code Online (Sandbox Code Playgroud)\n
事实证明 \xce\xb2.\xce\xb5\xce\xb7\xce\xbf\xce\xb9\xcf\x84.\xce\xb2\xce\xb5 答案很好,但我并没有真正掌握我的所有信息毕竟需要解决我的问题..
\n我必须使用 openssl 调用来跟踪 ca 证书链,使用以下命令:
\nopenssl s_client -connect google.com:443\nRun Code Online (Sandbox Code Playgroud)\n这给我返回了这个:
\nopenssl s_client -connect google.com:443\nRun Code Online (Sandbox Code Playgroud)\n由此可以看出它正在尝试查找此 Zscaler 证书而不是 google 证书。我发现这是我们公司用来监视流量的拦截器。\n通过这个,我找到了这篇文章,它导致了这个文档,其中解释了如何在 mac 环境中将证书添加到 docker。
\n所以解决方案是将证书添加到系统中:
\nsudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <CERTIFICATE>\nRun Code Online (Sandbox Code Playgroud)\n并将证书添加到 docker 并安装 ca-certificate,如 \xce\xb2.\xce\xb5\xce\xb7\xce\xbf\xce\xb9\xcf\x84.\xce\xb2\xce\xb5 所示:
\nADD ./ZscalerRootCertificate.crt /usr/local/share/ca-certificates/\nRUN apk add --no-cache \\\n --repository http://dl-cdn.alpinelinux.org/alpine/v3.15/main \\\n ca-certificates\nRUN update-ca-certificates\nRun Code Online (Sandbox Code Playgroud)\n
这不是与 Mac 相关的问题,您只是缺少容器中的根证书。
为了安装它们,您需要访问 Alpine 软件包存储库的 http 版本,否则您还会在获取此软件包时遇到 SSL 问题:
RUN apk add \
--no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main \
ca-certificates
Run Code Online (Sandbox Code Playgroud)
从那时起,您应该能够再次正常安装软件包。
| 归档时间: |
|
| 查看次数: |
28005 次 |
| 最近记录: |