Контейнер Redhat ubi8-micro без доверенных сертификатов корневого центра CA

Я хочу запустить простое приложение GO наregistry.access.redhat.com/ubi8/ubi-microизображение.

Но, к сожалению, я получаюx509: certificate signed by unknown authorityошибки в моем приложении, потому что, похоже, в контейнерах ubi8-micro нет хранилища доверенных сертификатов root ca.

Пробовал что-то подобное в моем Dockerfile, но безуспешно:

      FROM registry.access.redhat.com/ubi8/go-toolset as build

USER root

RUN yum update ca-certificates && \
    update-ca-trust

COPY . .

RUN go mod tidy && \
    go build .

FROM registry.access.redhat.com/ubi8/ubi-micro


COPY --from=build /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt /etc/pki/tls/certs/ca-bundle.trust.crt
COPY --from=build /opt/app-root/src/my-app .


RUN ./my-app  # Go app gives 509 error on GET https://google.com

Основная функция в Go

      func main() {
    _, err := http.Get("https://www.google.com")
    if err != nil {
        log.Printf("Error during Get is: %s", err) // throw 509
    }
}

ОБНОВЛЕНИЕ/РЕШЕНИЕ

Исправил это с помощьюubi8-minimalвместоubi8-microкак бегун

См. также (фиксации) на: https://github.com/michelmeeuwissen/redhat-go-example .

1 ответ

Неясно, на каком этапе вы получаете ошибку, поэтому я расскажу обо всем.

На хосте вам необходимо добавить собственный сертификат CA в хранилище доверенных сертификатов вашей системы (/etc/pki/ca-trust/source/anchors) и бегиupdate-ca-trust.

При создании контейнера я бы рекомендовал всегда предоставлять хранилище доверенных сертификатов вашего хоста контейнеру, даже если оно вам действительно нужно только при доступе к сети (buildah build --volume /etc/pki/ca-trust:/etc/pki/ca-trust:ro).

При запуске контейнера откройте хранилище доверенных сертификатов хоста для контейнера (--volume /etc/pki/ca-trust:/etc/pki/ca-trust:roв течениеcreateилиrun).

Поскольку go изначально просматривает хранилище доверенных сертификатов вашей системы, в отличие от многих других сред выполнения, которые создают свои собственные, которые вам нужно переопределить, это должно быть все, что вам нужно.

Другие вопросы по тегам