So beheben Sie Docker Multi-Stage Image Build-Fehler: „x509: Von unbekannter Stelle signiertes Zertifikat'?

Patricia Arquette
Freigeben: 2024-11-03 20:46:03
Original
150 Leute haben es durchsucht

How to Fix Docker Multi-Stage Image Build Errors:

Docker Multi-Stage Image Build Error: x509: Certificate Signed by Unknown Authority

Dieser Fehler tritt beim Erstellen von Docker-Images auf, die auf Git basieren für das Abhängigkeitsmanagement, wie etwa solche, die die Docker-Multi-Stage-Build-Technik verwenden.

Problemübersicht

Während der Image-Erstellung verwendet Git den System-CA-Speicher zur Überprüfung SSL-Zertifikate. In privaten Netzwerken enthält dieser Speicher jedoch möglicherweise nicht die erforderlichen Zertifikate, um eine Verbindung zu externen Servern wie GitHub und Proxy.golang.org herzustellen, was zum Fehler „x509: Zertifikat von unbekannter Stelle signiert“ führt.

Problemumgehung

Das Problem kann durch Importieren der Zertifikate in den CA-Speicher des Systems behoben werden.

Lösung

  1. OpenSSL installieren: Installieren Sie das OpenSSL-Paket auf dem Hostcomputer.
  2. Zertifikate abrufen: Rufen Sie die Zertifikate für die problematischen Server mit den folgenden OpenSSL-Befehlen ab:

    • Für GitHub: openssl s_client -showcerts -connect github.com:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/github.crt
    • Für Proxy.golang.org: openssl s_client -showcerts -connect Proxy.golang.org:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt
  3. Zertifikate importieren: Importieren Sie die Zertifikate mit dem Befehl update-ca-certificates in den System-CA-Speicher.

Überarbeitete Docker-Datei

Die folgende überarbeitete Docker-Datei enthält die Zertifikatimportschritte:

<code class="dockerfile">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 ["/app/main"]</code>
Nach dem Login kopieren

Hinweis: Das Update Die Ausführung des Befehls -ca-certificates kann einige Minuten dauern. Sobald der Vorgang abgeschlossen ist, sollten nachfolgende Docker-Builds ohne den Fehler „x509: von unbekannter Stelle signiertes Zertifikat“ fortgesetzt werden.

Das obige ist der detaillierte Inhalt vonSo beheben Sie Docker Multi-Stage Image Build-Fehler: „x509: Von unbekannter Stelle signiertes Zertifikat'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!