Контейнер Docker, выполняющий golang http.Client, получает ошибку `сертификат, подписанный неизвестным органом` - PullRequest
0 голосов
/ 24 октября 2018

Я создал Docker-контейнер для общения с Google API, используя GoLang.Я начал с использования контейнера SCRATCH и получаю ошибку certificate signed by unknown authority при переходе на ubuntu / alpine, я все еще получаю ошибку.

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

Любая помощь в решении этой проблемы будет отличной.Я могу нормально запустить код на моем Mac.

Проведя некоторое исследование, я вижу проблему https://github.com/golang/go/issues/24652

, но я не знаю, связано ли это напрямую или мне нужно предоставить какой-то сертификат для контейнера.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

С нуля, вам нужно включить доверенные сертификаты в дополнение к вашему приложению внутри образа.Например,

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"]
0 голосов
/ 24 октября 2018

Вы можете использовать самоподписанный сертификат специально для Ubuntu.Прежде чем начать, у вас должен быть пользователь без полномочий root, настроенный с привилегиями sudo.Вы можете узнать, как настроить такую ​​учетную запись пользователя, следуя нашей первоначальной настройке сервера для Ubuntu 16.04.

...