[Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)

2025. 6. 1. 01:06·개발 (Development)/Docker

개발 중 Alpine Linux를 기반으로 한 Dockerfile을 작성하고 이미지를 빌드하던 중, 예상치 못한 SSL 인증 오류와 패키지 설치 실패 문제가 발생했습니다. 본 글에서는 해당 오류가 발생한 배경과, 문제를 해결한 과정을 정리하여 공유드립니다.

문제 상황

Dockerfile 내에서 apk add 명령어를 통해 여러 패키지를 설치하려던 중, 다음과 같은 에러 메시지가 출력되었습니다.

ERROR: SSL routines:tls_process_server_certificate:certificate verify failed
ERROR: unable to select packages:
  bash (no such package)
  cargo (no such package)
  g++ (no such package)

에러 로그를 좀 더 자세히 보면 아래와 같이 나타납니다:

fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz
error:0A000086:SSL routines:tls_process_server_certificate:certificate verify failed
WARNING: fetching ... Permission denied
ERROR: unable to select packages

이러한 오류는 apk 명령어가 https를 통해 패키지 저장소에 접근하려다 SSL 인증서 검증에 실패하면서 발생한 것입니다. 인증 실패로 인해 APKINDEX를 불러오지 못했고, 그 결과로 필요한 패키지를 찾지 못했다는 메시지가 연이어 출력되었습니다.

원인 분석

문제를 정리해보면 다음과 같습니다.

  1. SSL 인증 오류
    • Docker 환경 또는 Alpine 기본 이미지 상에서 SSL 인증서(ca-certificates)가 누락되어 있었거나,
    • 내부망 혹은 제한된 네트워크 환경에서 SSL 인증서를 검증할 수 없는 상황이었습니다.
  2. 패키지 설치 실패
    • 인증 실패로 인해 패키지 인덱스를 가져오지 못하자, apk add 명령어가 지정된 패키지를 찾지 못하고 실패하게 된 것입니다.

해결 방법

이 문제를 우선적으로 해결하기 위해, 저장소 주소의 https를 http로 변경하여 SSL 인증을 우회했습니다.

# 에러 해결을 위해 추가 (2025-05-26)
RUN sed 's/https/http/g' -i /etc/apk/repositories
RUN apk update

이후 필요한 패키지를 설치하는 apk add 명령어를 다시 수행했고, 정상적으로 작동함을 확인하였습니다.

RUN apk add --no-cache bash

RUN apk --no-cache add \
    "bash~=5.2" \
    "libpq" \
    "libxslt" \
    "nodejs-current" \
    "xmlsec" \
    "libffi-dev" \
    "bash~=5.2" \
    "g++" \
    "gcc"

이전에는 bash, cargo, g++ 등 일부 패키지가 "no such package"라는 오류를 출력하며 설치되지 않았는데, 저장소 접근 문제가 해결되자 이 문제도 함께 해결되었습니다.

정리

항목 내용
오류 메시지 certificate verify failed, no such package
원인 SSL 인증 실패로 패키지 저장소 접근 불가
조치 /etc/apk/repositories 내 주소를 https → http로 변경
결과 apk update 및 apk add가 정상 작동함

보안상의 유의사항

이번 해결은 빠르게 개발 환경에서 문제를 해결하기 위한 임시적 우회 방법입니다. 하지만 http는 전송 중 데이터가 암호화되지 않기 때문에, 운영 환경에서는 반드시 https를 사용하는 것이 바람직합니다.

보다 근본적인 해결책은 다음과 같습니다:

  • ca-certificates 패키지를 설치하여 인증서 문제 해결
  • 자체적으로 신뢰할 수 있는 사설 인증서(CA)를 시스템에 등록
  • 내부 저장소 미러를 통한 보안된 패키지 제공

마무리하며

이와 같은 SSL 인증 관련 오류는 Alpine과 같은 경량 리눅스 이미지에서 종종 발생할 수 있습니다. Dockerfile을 구성할 때 환경에 따라 인증서 이슈를 사전에 고려하고, 보안과 편의 사이에서 적절한 균형을 찾는 것이 중요합니다.

개발 중 겪은 작은 시행착오가 다른 분들에게는 시간을 줄여주는 팁이 되길 바랍니다.

반응형

'개발 (Development) > Docker' 카테고리의 다른 글

[Docker] Docker 환경에서 yarn 설치 시 인증서 오류 해결  (0) 2025.06.01
[Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결  (0) 2025.06.01
[Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법  (0) 2025.04.26
[Docker] Dockerfile에서 chown이 동작하지 않을 때, 의외의 원인과 해결법  (0) 2025.04.19
[Docker] Docker 로그 필터링 - grep 사용 시 문제와 해결 팁  (0) 2024.12.30
'개발 (Development)/Docker' 카테고리의 다른 글
  • [Docker] Docker 환경에서 yarn 설치 시 인증서 오류 해결
  • [Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결
  • [Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법
  • [Docker] Dockerfile에서 chown이 동작하지 않을 때, 의외의 원인과 해결법
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python
    java
    Spring boot
    Vue.js
    백준온라인저지
    ADsP
    timescaledb
    Linux
    Kafka
    오답노트
    PostgreSQL
    MyBatis
    DevOps
    pandas
    자바
    백준알고리즘
    백준자바
    JSON
    데이터분석
    백준
    Linux master
    JPA
    javascript
    AWS
    Kubernetes
    리눅스 마스터 2급
    리눅스 마스터 2급 2차
    deepseek
    springboot
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)
상단으로

티스토리툴바