>백엔드 개발 >Golang >Docker 다단계 이미지 빌드 오류를 수정하는 방법: \'x509: 알 수 없는 기관에서 서명한 인증서\'?

Docker 다단계 이미지 빌드 오류를 수정하는 방법: \'x509: 알 수 없는 기관에서 서명한 인증서\'?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 20:46:03236검색

How to Fix Docker Multi-Stage Image Build Errors:

Docker 다단계 이미지 빌드 오류: x509: 알 수 없는 기관에서 서명한 인증서

이 오류는 Git에 의존하는 Docker 이미지를 빌드할 때 발생합니다. docker-multi-stage-build 기술을 사용하는 것과 같은 종속성 관리를 위해.

문제 개요

이미지 빌드 중에 Git은 시스템 CA 저장소를 사용하여 확인합니다. SSL 인증서. 그러나 개인 네트워크에서는 이 저장소에 GitHub 및 Proxy.golang.org와 같은 외부 서버에 연결하는 데 필요한 인증서가 포함되어 있지 않아 "x509: 알 수 없는 기관에서 서명된 인증서" 오류가 발생할 수 있습니다.

해결 방법

인증서를 시스템 CA 저장소로 가져오면 문제를 해결할 수 있습니다.

해결책

  1. OpenSSL 설치: 호스트 컴퓨터에 OpenSSL 패키지를 설치합니다.
  2. 인증서 받기: 다음 OpenSSL 명령을 사용하여 문제가 있는 서버에 대한 인증서를 검색합니다.

    • GitHub의 경우: openssl s_client -showcerts -connect github.com:443 < /dev/null 2> /dev/null | openssl x509 -PEM 결과 > ${cert_location}/github.crt
    • proxy.golang.org의 경우: openssl s_client -showcerts -connect Proxy.golang.org:443 < /dev/null 2> /dev/null | openssl x509 -PEM 결과 > ${cert_location}/proxy.golang.crt
  3. 인증서 가져오기: update-ca-certificates 명령을 사용하여 인증서를 시스템 CA 저장소로 가져옵니다.

수정된 Dockerfile

다음 수정된 Dockerfile에는 인증서 가져오기 단계가 포함되어 있습니다.

<code class="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 ["/app/main"]</code>

참고: 업데이트 -ca-certificates 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 완료되면 후속 Docker 빌드는 "x509: 알 수 없는 기관에서 서명된 인증서" 오류 없이 진행되어야 합니다.

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

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