使用 GoLang HTTP.Client 的 Docker 容器遇到证书颁发机构错误
在尝试与 Google API 通信时,有人构建了一个 Docker使用 GoLang 的容器。最初,使用了 SCRATCH 容器,导致错误“证书由未知机构签名”。切换到 ubuntu/alpine 后,错误仍然存在。
该问题的出现是由于容器内缺少可信证书。要纠正此问题,可以采用两种方法:
Scratch Image
将受信任的证书与应用程序一起合并:
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 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"]
通过采用这些方法,容器将拥有必要的证书,从而允许与 Google API 无缝通信。
以上是如何解决在 Docker 容器中使用 GoLang 的 HTTP.Client 时出现'由未知机构签名的证书”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!