Fehlerbehebung „x509: Von unbekannter Stelle signiertes Zertifikat“-Fehler im Docker Multi-Stage Go Image Build
Beim Versuch, ein Multi-Stage-Go-Image-Build zu erstellen Wenn Sie ein Docker-Image für eine Go-Anwendung in einem privaten Netzwerk bereitstellen, tritt möglicherweise der folgende Fehler auf:
x509: certificate signed by unknown authority
Dieser Fehler tritt aufgrund von Schwierigkeiten bei der Zertifikatsüberprüfung beim Herunterladen von Abhängigkeiten über Go Get oder Go Mod Download auf. Während das Setzen der Umgebungsvariablen GIT_SSL_NO_VERIFY dieses Problem für Agent-Umgebungsvariablen umgehen kann, funktioniert es nicht, wenn Go Get oder Go Mod Download verwendet werden.
Lösung
Um dieses Problem zu beheben Um eine sichere Zertifikatsüberprüfung auszustellen und zu aktivieren, können Sie die erforderlichen Zertifikate mit openSL in den CA-Speicher Ihres Systems importieren. Zum Beispiel:
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...
Durch den Import der Zertifikate in den CA-Speicher wird die sichere Zertifikatsüberprüfung für den Git-Abhängigkeitsabruf aktiviert.
Beispiel
Die folgende Docker-Datei veranschaulicht die Lösung:
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"]
Diese Docker-Datei importiert die erforderlichen Zertifikate und aktualisiert den CA-Speicher, was eine sichere Zertifikatsüberprüfung während des Abhängigkeitsabrufs für Ihren Go-Anwendungsaufbau in einem privaten Netzwerk ermöglicht.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „x509: Von unbekannter Stelle signiertes Zertifikat' in Docker Multi-Stage Go Image Builds?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!