Maison > développement back-end > Golang > le corps du texte

Comment corriger l'erreur « x509 : certificat signé par une autorité inconnue » dans les constructions d'images Go en plusieurs étapes Docker ?

Mary-Kate Olsen
Libérer: 2024-11-04 10:57:30
original
928 Les gens l'ont consulté

How to Fix

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
Copier après la connexion

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...
Copier après la connexion

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"]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!