Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan Ralat \"x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui\" dalam Imej Docker Multi-Stage Build Go?

Bagaimana untuk Menyelesaikan Ralat \"x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui\" dalam Imej Docker Multi-Stage Build Go?

Barbara Streisand
Barbara Streisandasal
2024-11-05 08:05:02462semak imbas

How to Resolve

Imej Docker Multi-Stage Build Go dengan Isu Kuasa Sijil

Masalah:

Bila cuba membina imej Go dalam rangkaian syarikat persendirian menggunakan binaan berbilang peringkat Docker, anda mungkin menghadapi ralat yang menyatakan "x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui." Ini berlaku apabila Git cuba mendapatkan semula kebergantungan daripada pelayan HTTPS selamat.

Punca:

Isu ini berpunca daripada kekurangan sijil yang diperlukan dalam stor CA sistem, menyebabkan Git untuk menolak sambungan HTTPS.

Penyelesaian:

Untuk menyelesaikan isu ini, sijil yang hilang perlu diimport ke dalam stor CA sistem menggunakan OpenSSL. Berikut ialah contoh Fail Docker yang menunjukkan cara untuk mencapainya:

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

Penjelasan:

Fail Docker ini termasuk beberapa langkah tambahan berbanding dengan yang asal. Ia mula-mula memasang OpenSSL dan mengemas kini sijil CA sistem. Kemudian, ia menggunakan OpenSSL untuk mendapatkan semula sijil daripada "github.com" dan "proxy.golang.org" dan mengimportnya ke dalam gedung CA. Akhir sekali, ia mengemas kini sijil, membolehkan Git berjaya mendapatkan semula kebergantungan semasa arahan muat turun mod go.

Nota:

Daripada mengedit fail Docker untuk mengimport sijil, anda juga boleh menetapkan pembolehubah persekitaran GIT_SSL_NO_VERIFY=1 pada pembolehubah persekitaran ejen anda. Walau bagaimanapun, pendekatan ini tidak disyorkan untuk kegunaan pengeluaran kerana ia melumpuhkan pengesahan SSL.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \"x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui\" dalam Imej Docker Multi-Stage Build Go?. 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