web-dev-qa-db-fra.com

Docker container exécutant golang http.Client obtenant une erreur `certificat signé par une autorité inconnue`

J'ai créé un conteneur Docker pour parler à l'API Google à l'aide de GoLang. J'ai commencé à utiliser un conteneur SCRATCH et j'obtiens l'erreur certificate signed by unknown authority En passant à ubuntu/Alpine, j'obtiens toujours l'erreur.

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

Toute aide pour résoudre ce problème serait formidable. Je peux exécuter le code correctement sur mon mac.

Après avoir fait quelques recherches, je peux voir le problème https://github.com/golang/go/issues/24652

mais je ne sais pas si cela est directement lié ou si je dois partager un certificat avec le conteneur.

11
Westy10101

Avec scratch, vous devez inclure les certificats de confiance en plus de votre application dans l'image. Par exemple.

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

Si vous utilisez Alpine et une construction à plusieurs étapes, cela ressemble à:

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

Vous pouvez utiliser le certificat d'auto-signature spécialement pour ubuntu. Avant de commencer, vous devez avoir un utilisateur non root configuré avec les privilèges Sudo. Vous pouvez apprendre à configurer un tel compte d'utilisateur en suivant notre configuration initiale de serveur pour Ubuntu 16.04.

0
Meharwan Singh