ホームページ >バックエンド開発 >Golang >Dockerコンテナ内のGoLangの`http.Client`の「不明な認証局によって署名された証明書」エラーを修正する方法は?

Dockerコンテナ内のGoLangの`http.Client`の「不明な認証局によって署名された証明書」エラーを修正する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 20:18:12574ブラウズ

How to Fix

GoLang の Http.Client を使用して Docker コンテナの「不明な認証局によって署名された証明書」エラーを解決する方法

問題の説明

開発者が次の場合にエラーに遭遇するGoLang の http.Client を使用して Docker コンテナを実行し、Google API と対話します。このエラーは、コンテナ環境内で証明書の信頼性が欠如している問題に起因します。

原因分析

この問題は、スクラッチベースの Docker イメージに必要な信頼できる証明書が不足しているために発生します。スクラッチ イメージを使用する場合、開発者はこれらの証明書をイメージ内に手動で含める必要があります。

解決策

この問題を解決するには、次の手順に従います。

  1. 信頼できるものを注入する証明書:

    • スクラッチ イメージの場合、アプリケーション コードの横に ca-certificates.crt ファイルを含めます:

      FROM scratch
      ADD ca-certificates.crt /etc/ssl/certs/
      ADD main /
      CMD ["/main"]
    • ディストリビューションによってパッケージ化された証明書のみが必要なマルチステージ ビルドベンダー:

      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 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"]
  2. コンテナを再起動します:

    証明書が挿入されたら、Docker コンテナを再起動して、変更を適用します。

これらの手順に従うと、「不明な機関によって署名された証明書」エラーが発生することなく、Docker コンテナ内で GoLang の http.Client を正常に使用できるようになります。

以上がDockerコンテナ内のGoLangの`http.Client`の「不明な認証局によって署名された証明書」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。