Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den Fehler „x509: Von unbekannter Stelle signiertes Zertifikat“ in Docker Multi-Stage Go Image Builds?

Wie behebt man den Fehler „x509: Von unbekannter Stelle signiertes Zertifikat“ in Docker Multi-Stage Go Image Builds?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 10:57:30929Durchsuche

How to Fix

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!

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