运行golang http.Docker的Docker容器客户端收到错误的``证书由未知权限签名''

时间:2018-10-24 12:37:41

标签: docker go tls1.2

我创建了一个docker容器,用于使用GoLang与Google api通讯。我开始使用SCRATCH容器,并在更改为ubuntu / alpine时收到错误certificate signed by unknown authority,但仍然收到错误。

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

任何帮助解决此问题的方法都将非常有用。我可以在Mac上正常运行代码。

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

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

2 个答案:

答案 0 :(得分:14)

从头开始,除了图像中的应用程序之外,还需要包括受信任的证书。例如

FROM scratch
ADD ca-certificates.crt /etc/ssl/certs/
ADD main /
CMD ["/main"]

如果您使用Alpine和多阶段构建,则如下所示:

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"]

答案 1 :(得分:0)

您可以专门为ubuntu使用自签名证书。 在开始之前,您应该已经为非root用户配置了sudo特权。您可以按照我们对Ubuntu 16.04的初始服务器设置来学习如何设置这样的用户帐户。