首頁 >後端開發 >Golang >如何修復 Docker 容器中 GoLang 的 `http.Client` 中的「憑證由未知機構簽署」錯誤?

如何修復 Docker 容器中 GoLang 的 `http.Client` 中的「憑證由未知機構簽署」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-01 20:18:12560瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn