>  기사  >  백엔드 개발  >  Go 프로젝트용 Docker 다단계 빌드의 \"x509: 알 수 없는 기관에서 서명한 인증서\" 오류를 수정하는 방법은 무엇입니까?

Go 프로젝트용 Docker 다단계 빌드의 \"x509: 알 수 없는 기관에서 서명한 인증서\" 오류를 수정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 00:23:30630검색

How to Fix

Docker 다단계 빌드: "x509: 알 수 없는 기관에서 서명한 인증서" 오류 해결

Go in용 Docker 이미지를 빌드하려고 할 때 다단계 빌드를 사용하는 개인 기업 네트워크의 경우 "x509: 알 수 없는 기관에서 서명된 인증서" 오류가 발생할 수 있습니다. 이 문제는 Go 종속성을 검색하는 동안 인증서 및 인증 문제로 인해 발생합니다.

문제 이해:

Go에서 종속성에 액세스하는 데 사용되는 git, 컬을 활용합니다. 이를 위해서는 필요한 인증서를 시스템의 CA 저장소로 가져와야 합니다. 처음에는 환경 변수 GIT_SSL_NO_VERIFY=1을 사용하는 것이 제안되었지만 이 접근 방식은 종속성을 얻는 데 효과적이지 않은 것으로 나타났습니다.

해결책: CA 저장소로 인증서 가져오기

이 문제를 해결하려면 관련 인증서를 시스템의 CA 저장소로 가져와야 합니다. 방법은 OS에 따라 다르지만 일반적으로 openssl 명령을 사용합니다.

예를 들어 Debian 기반 시스템에서는 다음 명령을 사용할 수 있습니다.

  1. apt-get 업데이트 && apt-get install -y ca-certificates openssl
  2. openssl s_client -showcerts -connect github.com:443 /dev/null | openssl x509 -PEM 결과 > /usr/local/share/ca-certificates/github.crt(GitHub 인증서용)
  3. openssl s_client -showcerts -connect proxy.golang.org:443 /dev/null | openssl x509 -PEM 결과 > /usr/local/share/ca-certificates/proxy.golang.crt(proxy.golang.org 인증서용)
  4. update-ca-certificates

수정된 Dockerfile :

이러한 인증서 가져오기 단계를 Dockerfile에 통합하면 문제가 해결되어 종속성을 확보하고 빌드를 성공적으로 진행할 수 있습니다. 다음은 업데이트된 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"]

위 내용은 Go 프로젝트용 Docker 다단계 빌드의 \"x509: 알 수 없는 기관에서 서명한 인증서\" 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.