首頁  >  文章  >  後端開發  >  如何修復 Docker 多階段 Go 映像建置中的「x509:憑證由未知機構簽署」錯誤?

如何修復 Docker 多階段 Go 映像建置中的「x509:憑證由未知機構簽署」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 10:57:30929瀏覽

How to Fix

解決Docker 多階段Go 映像建置中的「x509:憑證由未知機構簽署」錯誤

嘗試建置多階段時在私有網路中為Go 應用程式暫存Docker 映像時,您可能會遇到以下錯誤:

x509: certificate signed by unknown authority

此錯誤是由於在透過go get 或go mod download 下載依賴項時憑證驗證困難而出現的。雖然設定 GIT_SSL_NO_VERIFY 環境變數可以繞過 Agent 環境變數的此問題,但在使用 go get 或 go mod download 時不起作用。

解決方案

解決此問題頒發並啟用安全性憑證驗證後,您可以使用 openssl 將必要的憑證匯入系統的 CA 儲存體中。例如:

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

透過將憑證匯入 CA 存儲,為 git 依賴項檢索啟用安全性憑證驗證。

範例

以下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 ["/main"]

此Dockerfile 將導入必要的憑證並更新CA 存儲,從而允許在專用網路中建置Go 應用程式的相依性檢索期間進行安全性憑證驗證。

以上是如何修復 Docker 多階段 Go 映像建置中的「x509:憑證由未知機構簽署」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn