解决 GoLang HTTP 客户端的 Docker 容器中的“证书由未知机构签名”错误
运行 Docker 容器来访问 Google API 时使用GoLang的http.Client,您可能会遇到错误“证书由未知机构签名”。当容器缺少必要的受信任证书来验证 API 服务器的证书时,就会出现此问题。
Scratch 容器
使用 SCRATCH 容器,包含受信任的证书至关重要与您的应用程序一起放在容器中。要实现此目的,请将 ca-certificates.crt 文件直接添加到容器中:
FROM scratch ADD ca-certificates.crt /etc/ssl/certs/ ADD main / CMD ["/main"]
多阶段构建
如果使用多阶段构建,您可以通过修改 Dockerfile 来利用发行版供应商打包的证书:
FROM golang:alpine as build RUN apk --no-cache add ca-certificates WORKDIR /go/src/app COPY . . RUN CGO_ENABLED=0 go-wrapper install -ldflags '-extldflags "-static"' FROM scratch COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=build /go/bin/app /app ENTRYPOINT ["/app"]
通过合并这些修改,您为容器提供必要的证书以建立安全连接并消除“未知机构签署的证书”错误,从而使 GoLang HTTP 客户端能够与 Google API 成功交互。
以上是如何修复 GoLang Docker 容器中的'证书由未知机构签名”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!