Heim >Backend-Entwicklung >Golang >Wie behebe ich „Von unbekannter Autorität signiertes Zertifikat'-Fehler in GoLangs „http.Client' in Docker-Containern?

Wie behebe ich „Von unbekannter Autorität signiertes Zertifikat'-Fehler in GoLangs „http.Client' in Docker-Containern?

Susan Sarandon
Susan SarandonOriginal
2024-12-01 20:18:12561Durchsuche

How to Fix

So beheben Sie den Fehler „Von unbekannter Stelle signiertes Zertifikat“ für Docker-Container mithilfe von GoLangs Http.Client

Problembeschreibung

Entwickler stoßen auf einen Fehler, wenn Ausführen eines Docker-Containers mit GoLangs http.Client, um mit der Google API zu interagieren. Dieser Fehler ist auf ein Problem zurückzuführen, bei dem Zertifikate in der Containerumgebung nicht vertrauenswürdig sind.

Ursachenanalyse

Das Problem tritt auf, weil Scratch-basierten Docker-Images die erforderlichen vertrauenswürdigen Zertifikate fehlen. Bei Verwendung von Scratch-Images müssen Entwickler diese Zertifikate manuell in das Image einfügen.

Lösung

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Vertrauenswürdige Zertifikate einfügen:

    • Fügen Sie für Scratch-Bilder das hinzu ca-certificates.crt-Datei neben Ihrem Anwendungscode:

      FROM scratch
      ADD ca-certificates.crt /etc/ssl/certs/
      ADD main /
      CMD ["/main"]
    • Für mehrstufige Builds, bei denen Sie nur vom Distributionsanbieter gepackte Zertifikate wünschen:

      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. Starten Sie Ihr neu Container:

    Sobald die Zertifikate eingefügt wurden, starten Sie Ihren Docker-Container neu, um die Änderungen zu übernehmen.

Wenn Sie diese Schritte befolgen, sollten Sie in der Lage sein, sie erfolgreich zu verwenden GoLangs http.Client in Ihrem Docker-Container, ohne dass der Fehler „Von unbekannter Behörde signiertes Zertifikat“ auftritt.

Das obige ist der detaillierte Inhalt vonWie behebe ich „Von unbekannter Autorität signiertes Zertifikat'-Fehler in GoLangs „http.Client' in Docker-Containern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn