회사망에서 docker pull 을 하다 보면 아래와 같은 에러를 만날 수 있다.
docker: error pulling image configuration: download failed after attempts=6: tls: failed to verify certificate: x509: certificate signed by unknown authority
문제 발생의 이유
회사망에서는 보통 외부와 직접 통신하지 않고, 보안 게이트웨이(Proxy, SSL Inspection 장비) 를 통해 인터넷에 접근합니다.
이 장비는 TLS 트래픽을 중간에서 끊고(복호화) 다시 재암호화 하여 전달한다.
원래라면 docker pull 시 Docker Hub(docker.io) 서버에서 발급한 공인 CA 인증서를 받아야 한다.
하지만 회사망에서는 게이트웨이가 대신 TLS를 맺고, 회사 내부 CA로 서명된 인증서를 클라이언트(Docker)에게 전달한다.
결과적으로 Docker는
“내가 기대한 건 Docker Hub가 DigiCert(공인 CA)로 서명한 인증서인데,
지금 보니 알 수 없는 회사 CA가 서명했네? → 신뢰할 수 없음!”
“내가 기대한 건 Docker Hub가 DigiCert(공인 CA)로 서명한 인증서인데,
지금 보니 알 수 없는 회사 CA가 서명했네? → 신뢰할 수 없음!”
그래서 x509: certificate signed by unknown authority 오류가 발생
해결방법: 회사의 CA를 신뢰목록에 추가
시스템 전역 CA에 추가
리눅스에서 시스템 전체가 신뢰하는 CA 목록에 회사 CA 인증서를 넣는다.
sudo cp company-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
이제 curl, wget, apt 등 OS 도구들은 회사 CA를 신뢰하게 된다.
하지만 Docker는 별도의 저장소를 사용하므로, 이것만으로는 충분하지 않다.
Docker 전용 CA 디렉토리에 추가
Docker는 /etc/docker/certs.d/<레지스트리주소>:<포트>/ca.crt 경로를 확인한다.
따라서 회사 CA를 해당 위치에 직접 복사해야 한다.
sudo mkdir -p /etc/docker/certs.d/registry-1.docker.io
sudo cp company-ca.crt /etc/docker/certs.d/registry-1.docker.io/ca.crt
그 후 Docker를 재시작한다.
sudo systemctl daemon-reload
sudo systemctl restart docker'웹 정리 > TIL' 카테고리의 다른 글
| npm install 시 ssl 에러 (1) | 2025.09.15 |
|---|---|
| RedHat에서 Apache 설치하기 그리고 베스쳔 터널링 (0) | 2025.04.21 |
| Node-Red [1] 설치와 RestApi 테스트 (0) | 2025.01.10 |
| Vscode에서 환경별 다른 버전의 Node.js 사용하기 (0) | 2024.11.21 |
| nginx의 proxy_read_timeout 설정(api timeout) (4) | 2024.11.08 |