Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan Ralat \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\' dalam Docker Multi-Stage Go Image Builds?

Bagaimana untuk Membetulkan Ralat \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\' dalam Docker Multi-Stage Go Image Builds?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 10:57:30998semak imbas

How to Fix

Menyelesaikan masalah "x509: Certificate Signed by Unknown Authority" Ralat dalam Docker Multi-Stage Go Image Build

Apabila cuba membina multi- Imej Docker peringkat untuk aplikasi Go dalam rangkaian peribadi, anda mungkin menghadapi perkara berikut ralat:

x509: certificate signed by unknown authority

Ralat ini timbul kerana kesukaran dengan pengesahan sijil semasa memuat turun kebergantungan melalui muat turun mod go get atau go. Semasa menetapkan pembolehubah persekitaran GIT_SSL_NO_VERIFY boleh memintas isu ini untuk pembolehubah persekitaran Ejen, ia tidak berfungsi apabila menggunakan muat turun mod go get atau go.

Penyelesaian

Untuk menyelesaikan masalah ini mengeluarkan dan membolehkan pengesahan sijil selamat, anda boleh mengimport sijil yang diperlukan ke dalam stor CA sistem anda menggunakan openssl. Contohnya:

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...

Dengan mengimport sijil ke dalam gedung CA, pengesahan sijil selamat didayakan untuk mendapatkan semula pergantungan git.

Contoh

Fail Docker berikut menunjukkan penyelesaiannya:

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"]

Fail Docker ini akan mengimport sijil yang diperlukan dan kemas kini stor CA, membenarkan pengesahan sijil selamat semasa mendapatkan semula pergantungan untuk binaan aplikasi Go anda dalam rangkaian peribadi.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\' dalam Docker Multi-Stage Go Image Builds?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn