> 백엔드 개발 > Golang > Docker Multi-Stage Go 이미지 빌드의 \'x509: 알 수 없는 기관에서 서명된 인증서\' 오류를 해결하는 방법은 무엇입니까?

Docker Multi-Stage Go 이미지 빌드의 \'x509: 알 수 없는 기관에서 서명된 인증서\' 오류를 해결하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-04 03:05:02
원래의
940명이 탐색했습니다.

How to Resolve

Docker Multi-Stage Build Go 이미지: "x509: 알 수 없는 기관에서 서명한 인증서" 오류 해결

사설 기업 네트워크에서는 외부 종속성에 액세스하기 위한 신뢰할 수 있는 인증서가 부족하기 때문에 다단계 빌드를 사용하여 Go 이미지를 빌드하려고 할 때 "x509: 알 수 없는 기관에서 서명된 인증서" 오류가 발생하는 것이 일반적입니다.

근본 원인

이 오류는 go get and go 모드 다운로드에 사용되는 git이 컬을 사용하여 HTTPS 서버에 액세스하기 때문에 발생합니다. 개인 네트워크에서는 시스템 CA 저장소에 이러한 서버의 신뢰성을 확인하는 데 필요한 인증서가 없을 수 있습니다.

해결책

이 문제를 해결하려면 다음을 수행해야 합니다. 필요한 인증서를 시스템 CA 저장소로 가져옵니다. 이는 다음 업데이트된 Dockerfile에 표시된 대로 openssl 명령을 사용하여 달성할 수 있습니다.

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"]
로그인 후 복사

확인

이 수정 사항을 적용한 후 Docker 이미지 빌드가 진행되어야 합니다. 이제 필요한 인증서가 CA 저장소에 설치되었기 때문에 "x509: 알 수 없는 기관에서 서명된 인증서" 오류가 발생하지 않습니다.

...

Step 5/19 : RUN openssl s_client -showcerts -connect github.com:443 </dev/null 2></dev/null|openssl x509 -outform PEM > ${cert_location}/github.crt
 ---> Running in bb797e26d4b4
Removing intermediate container bb797e26d4b4
 ---> 6c68ddafd884
Step 6/19 : RUN openssl s_client -showcerts -connect proxy.golang.org:443 </dev/null 2></dev/null|openssl x509 -outform PEM >  ${cert_location}/proxy.golang.crt
 ---> Running in 61f59939d75e
Removing intermediate container 61f59939d75e
 ---> 72d2b03b11e6
Step 7/19 : RUN update-ca-certificates
 ---> Running in 6cf9aa248776
Updating certificates in /etc/ssl/certs...
2 added, 0 removed; done.

...

Step 8/18 : COPY go.mod go.sum ./
 ---> 436263b76050
Step 9/18 : RUN go mod download
 ---> Running in 2387c78147db
Removing intermediate container 2387c78147db
 ---> a37c05c2b531
Step 10/18 : COPY . .
 ---> 01b49c388f59

...
로그인 후 복사

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿