Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Membetulkan Ralat \"x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\" dalam Docker Multi-Stage Build for Go Projects?
Pembinaan Berbilang Peringkat Docker: Menyelesaikan Ralat "x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui"
Apabila cuba membina imej Docker untuk Masuk rangkaian korporat persendirian menggunakan binaan berbilang peringkat, ralat "x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui" mungkin timbul. Isu ini berpunca daripada isu sijil dan pengesahan semasa mendapatkan semula kebergantungan Go.
Memahami Masalah:
Ralat berlaku kerana git, yang digunakan oleh Go to access dependencies, menggunakan curl. Ini memerlukan sijil yang diperlukan untuk diimport ke dalam stor CA sistem. Pada mulanya, dicadangkan untuk menggunakan pembolehubah persekitaran GIT_SSL_NO_VERIFY=1, tetapi pendekatan ini terbukti tidak berkesan untuk mendapatkan kebergantungan.
Penyelesaian: Mengimport Sijil ke dalam Kedai CA
Untuk menyelesaikan isu ini, adalah perlu untuk mengimport sijil yang berkaitan ke dalam stor CA sistem. Kaedah untuk berbuat demikian berbeza-beza bergantung pada OS, tetapi secara amnya melibatkan penggunaan arahan openssl.
Sebagai contoh, dalam sistem berasaskan Debian, arahan berikut boleh digunakan:
Fail Docker yang diubah suai :
Dengan memasukkan langkah pengimportan sijil ini ke dalam Dockerfile, isu itu boleh diselesaikan, membolehkan kebergantungan diperoleh dan binaan diteruskan dengan jayanya. Di bawah ialah fail Docker yang dikemas kini:
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"]
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \"x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\" dalam Docker Multi-Stage Build for Go Projects?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!