Maison >développement back-end >Golang >Comment corriger les erreurs « Certificat signé par une autorité inconnue » dans « http.Client » de GoLang dans les conteneurs Docker ?

Comment corriger les erreurs « Certificat signé par une autorité inconnue » dans « http.Client » de GoLang dans les conteneurs Docker ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 20:18:12623parcourir

How to Fix

Comment résoudre l'erreur « Certificat signé par une autorité inconnue » pour les conteneurs Docker à l'aide de Http.Client de GoLang

Description du problème

Les développeurs rencontrent une erreur lorsque exécuter un conteneur Docker avec http.Client de GoLang pour interagir avec l'API Google. Cette erreur provient d'un problème où les certificats manquent de confiance dans l'environnement du conteneur.

Analyse des causes

Le problème survient parce que les images Docker basées sur Scratch ne disposent pas des certificats de confiance nécessaires. Lorsqu'ils utilisent des images de travail, les développeurs doivent inclure manuellement ces certificats dans l'image.

Solution

Pour résoudre ce problème, suivez ces étapes :

  1. Injecter des certificats de confiance :

    • Pour les images scratch, incluez le ca-certificates.crt à côté de votre code d'application :

      FROM scratch
      ADD ca-certificates.crt /etc/ssl/certs/
      ADD main /
      CMD ["/main"]
    • Pour les versions en plusieurs étapes où vous souhaitez uniquement des certificats emballés par le fournisseur de distribution :

      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. Redémarrez votre conteneur :

    Une fois les certificats injectés, redémarrez votre conteneur Docker pour appliquer les modifications.

En suivant ces étapes, vous devriez pouvoir utiliser avec succès http.Client de GoLang dans votre conteneur Docker sans rencontrer l'erreur « Certificat signé par une autorité inconnue ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn