Maison >développement back-end >Golang >Comment corriger l'erreur « x509 : certificat signé par une autorité inconnue » dans les constructions d'images Go en plusieurs étapes Docker ?
Dépannage de l'erreur « x509 : certificat signé par une autorité inconnue » dans la création d'images Go en plusieurs étapes de Docker
Lors de la tentative de création d'un multi- étape Docker pour une application Go dans un réseau privé, vous pouvez rencontrer l'erreur suivante :
x509: certificate signed by unknown authority
Cette erreur survient en raison de difficultés de vérification du certificat lors du téléchargement des dépendances via go get ou go mod download. Bien que la définition de la variable d'environnement GIT_SSL_NO_VERIFY puisse contourner ce problème pour les variables d'environnement de l'agent, cela ne fonctionne pas lors de l'utilisation de go get ou go mod download.
Solution
Pour résoudre ce problème émettre et activer la vérification sécurisée des certificats, vous pouvez importer les certificats nécessaires dans le magasin CA de votre système à l'aide d'openssl. Par exemple :
FROM golang:latest as builder RUN apt-get update && apt-get install -y ca-certificates openssl ARG cert_location=/usr/local/share/ca-certificates # Get certificate from "github.com" RUN openssl s_client -showcerts -connect github.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/github.crt # Get certificate from "proxy.golang.org" RUN openssl s_client -showcerts -connect proxy.golang.org:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt # Update certificates RUN update-ca-certificates # Proceed with your build process...
En important les certificats dans le magasin CA, la vérification sécurisée des certificats est activée pour la récupération des dépendances git.
Exemple
Le Dockerfile suivant illustre la solution :
FROM golang:latest as builder RUN apt-get update && apt-get install -y ca-certificates openssl ARG cert_location=/usr/local/share/ca-certificates # Get certificate from "github.com" RUN openssl s_client -showcerts -connect github.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/github.crt # Get certificate from "proxy.golang.org" RUN openssl s_client -showcerts -connect proxy.golang.org:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt # Update certificates RUN update-ca-certificates WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN GO111MODULE="on" CGO_ENABLED=0 GOOS=linux go build -o main ${MAIN_PATH} FROM alpine:latest LABEL maintainer="Kozmo" RUN apk add --no-cache bash WORKDIR /app COPY --from=builder /app/main . EXPOSE 8080 CMD ["/main"]
Ce Dockerfile importera les certificats nécessaires et mettra à jour le magasin CA, permettant une vérification sécurisée des certificats lors de la récupération des dépendances pour la construction de votre application Go au sein d'un réseau privé.
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!