Docker 容器问题:未知机构签署的错误证书
使用 GoLang 的 http.Client 运行 Docker 容器可能会导致错误消息“由未知机构签署的证书。”从头开始创建容器或使用 Ubuntu/Alpine 映像时会遇到此问题。
要理解该问题,需要注意的是 http.Client 使用系统证书存储中的 TLS 配置。从头创建容器时,默认没有任何受信任的证书。
解决方案:
此问题的解决方案取决于 Docker 的类型您正在使用的图像:
Scratch图像:
FROM scratch ADD ca-certificates.crt /etc/ssl/certs/ ADD main / CMD ["/main"]
多阶段映像:
FROM golang:alpine as build RUN apk --no-cache add ca-certificates
FROM scratch COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=build /go/bin/app /app ENTRYPOINT ["/app"]
通过在 Docker 映像中包含受信任的证书,您的 http.Client 将能够验证服务器证书并成功向 Google 的 API 发出 HTTPS 请求。
以上是为什么我的 GoLang Docker 容器出现'由未知机构签署的证书”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!