登录
首页 >  Golang >  Go问答

运行 golang http.Client 的 Docker 容器出现错误“证书由未知机构签名”

来源:stackoverflow

时间:2024-04-13 21:27:35 390浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《运行 golang http.Client 的 Docker 容器出现错误“证书由未知机构签名”》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我创建了一个 docker 容器,用于使用 GoLang 与 google api 进行通信。我开始使用 SCRATCH 容器,并在更改为 ubuntu/alpine 后收到错误 certificate 由未知权威 签名,但我仍然收到错误。

resp, err := client.Get("https://www.googleapis.com/oauth2/v3/userinfo")

任何解决此问题的帮助都会很棒。我可以在我的 Mac 上正常运行代码。

经过一些研究,我可以看到这个问题 https://github.com/golang/go/issues/24652

但我不知道这是否直接相关,或者我是否需要与容器共享一些证书。


解决方案


使用scratch,除了您的应用程序之外,您还需要在映像中包含受信任的证书。例如。如果你的项目中有ca-certificates.crt可以直接注入:

from scratch
add ca-certificates.crt /etc/ssl/certs/
add main /
cmd ["/main"]

如果您使用多阶段构建并且只需要发行版供应商打包的证书,则如下所示:

FROM golang:alpine as build
# Redundant, current golang images already include ca-certificates
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 the ca-certificate.crt from the build stage
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /go/bin/app /app
ENTRYPOINT ["/app"]

今天关于《运行 golang http.Client 的 Docker 容器出现错误“证书由未知机构签名”》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>