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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 10:57:30928검색

How to Fix

Docker Multi-Stage Go 이미지 빌드에서 "x509: Certificate Signed by Unknown Authority" 오류 문제 해결

다중 개인 네트워크에서 Go 애플리케이션용 Docker 이미지를 준비하면 다음 오류가 발생할 수 있습니다.

x509: certificate signed by unknown authority

이 오류는 go get 또는 go mod 다운로드를 통해 종속성을 다운로드할 때 인증서 확인의 어려움으로 인해 발생합니다. GIT_SSL_NO_VERIFY 환경 변수를 설정하면 에이전트 환경 변수에 대해 이 문제를 우회할 수 있지만, 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 Multi-Stage Go 이미지 빌드에서 \"x509: 알 수 없는 기관에 의해 서명된 인증서\" 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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