Skip to content

Error response from daemon: Get https://registry.domain.com/v2/: x509: certificate signed by unknown authority

์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ์กฐ์ง์—์„œ ์‚ฌ๋‚ด ์ •์ฑ…์ด๋‚˜ ๋„์ปค ํ—ˆ๋ธŒ์˜ ๋‹ค์šด๋กœ๋“œ ์ œํ•œ๋Ÿ‰์„ ๊ฒฝํ—˜ํ•˜๊ณ  ๋„์ปค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์„ค ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„ ์˜ค๋ฅ˜๋Š” ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•  ๋•Œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค ์—”์ง„์ด๋ผ๊ณ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ์ „๋‹ฌํ•ด์ค€ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์œ„์™€ ๊ฐ™์ด ๋‚ด ์ปดํ“จํ„ฐ์— ์„ค์น˜๋œ ๋„์ปค ์—”์ง„์—์„œ ์‚ฌ์„ค๋กœ ๊ตฌ์ถ•ํ•œ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ฃ .

๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ธ์ฆ์„œ โ€‹

๋„์ปค ์—”์ง„์—์„œ ์ฐธ์กฐํ•˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ํด๋”๋Š” certs.d ์ž…๋‹ˆ๋‹ค.

  • Windows: C:/ProgramData/Docker/certs.d/
  • Linux: /etc/docker/certs.d/
  • Mac: ~/.docker/certs.d/
sh
    /etc/docker/certs.d/         <-- Certificate directory
    โ””โ”€โ”€ registry.domain.com:5000 <-- Hostname:port
       โ”œโ”€โ”€ client.cert           <-- Client certificate
       โ”œโ”€โ”€ client.key            <-- Client key
       โ””โ”€โ”€ ca.crt                <-- Certificate authority that signed the registry certificate

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ โ€‹

HTTPS๋กœ ์‹คํ–‰๋œ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ ๋„์ปค ์—”์ง„์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก insecure-registries์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ๋„๋ฉ”์ธ ์ฃผ์†Œ์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์ธ ๋ถ€๋ถ„์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€ โ€‹

๋„์ปค ์—”์ง„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์Šคํ…œ์— ๋“ฑ๋ก๋œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€์˜ ์ธ์ฆ์„œ ๋ชฉ๋ก์œผ๋กœ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํฌ๋กฌ๊ณผ ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ HTTPS ํ†ต์‹  ์‹œ ์„œ๋ฒ„์—์„œ ์ „๋‹ฌํ•˜๋Š” ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ๊ธ‰๋ฐ›์€ ๋„๋ฉ”์ธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋„์ปค ์—”์ง„์—์„œ๋Š” ํšŒ์‚ฌ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋กœ๋œ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์—์„œ ์ „๋‹ฌ๋œ ์ธ์ฆ์„œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๋ฉฐ ๋™์ผํ•˜๊ฒŒ x509: certificate signed by unknown authority ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

CA ์ธ์ฆ์„œ ์ฒด์ธ โ€‹

๋„์ปค ์—”์ง„์—์„œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ๋ช‡๊ฐ€์ง€ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ๋กœ, ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„ ๊ตฌ์ถ• ์‹œ ์‚ฌ์šฉํ•œ CA ์ธ์ฆ์„œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ์™€ ์ธ์ฆ ๊ธฐ๊ด€๋“ค์— ๋Œ€ํ•œ ์ธ์ฆ์„œ๊ฐ€ ์—ฐ๊ฒฐ๋œ CA ์ธ์ฆ์„œ ์ฒด์ธ์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ง€๊ธˆ์€ UI ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šฉ์ž ๋ฐ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Harbor๋กœ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๋ฅผ ์žฌ๊ตฌ์ถ•ํ•˜์˜€์œผ๋‚˜ ๊ธฐ์กด ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์— ์‚ฌ์šฉ๋œ CA ์ธ์ฆ์„œ ํŒŒ์ผ์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋งŒ ์กด์žฌํ–ˆ๋˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์กฐ์ง ๋‚ด ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ๋œ CA ์ธ์ฆ์„œ ํŒŒ์ผ๊ณผ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ ๋ฐ ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ธ์ฆ์„œ ํด๋”์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•ด๋‹ฌ๋ผ๊ณ  ์•ˆ๋‚ดํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ์€ ๋„์ปค ์—”์ง„์ด ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ CA ์ธ์ฆ์„œ ์ฒด์ธ์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ๋ชฉ๋ก์— ํฌํ•จ์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Mac์šฉ ํ‚ค์ฒด์ธ ์ ‘๊ทผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค์ฒด์ธ์— ์ธ์ฆ์„œ ์ถ”๊ฐ€ํ•˜๊ธฐ์— ๋”ฐ๋ผ CA ์ธ์ฆ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์œ ํšจํ•œ ์ธ์ฆ์„œ์ž„์ด ํ‘œ์‹œ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

sh
docker login registry.domain.com -u 'username' -p 'password'
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ CA ์ธ์ฆ์„œ ์ฒด์ธ์„ ์‹œ์Šคํ…œ ์ธ์ฆ์„œ๋กœ ๋“ฑ๋กํ•˜๊ณ ๋‚˜์„œ๋Š” ๋„์ปค ์—”์ง„์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ๋ชฉ๋ก์— ๋”ฐ๋ผ ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•จ์„ ํ™•์ธํ•จ์œผ๋กœ ์ •์ƒ์ ์œผ๋กœ HTTPS ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋กœ๊ทธ์ธ ์˜ˆ์‹œ์ด๋ฏ€๋กœ CLI ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๋Š” ๋ฌด์‹œํ•ด์ฃผ์„ธ์š”.

์‹œ์Šคํ…œ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ CA ์ธ์ฆ์„œ ๋ณ‘ํ•ฉ โ€‹

On Linux any root certificates authorities are merged with the system defaults, including the hostโ€™s root CA set. If you are running Docker on Windows Server, or Docker Desktop for Windows with Windows containers, the system default certificates are only used when no custom root certificates are configured.

๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž ์ •์˜ ์ธ์ฆ์„œ(certs.d)๋Š” ์‹œ์Šคํ…œ ์ธ์ฆ์„œ์™€ CA ์ธ์ฆ์„œ๊ฐ€ ํ•ฉ์ณ์ ธ์„œ ๋“ฑ๋ก๋œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ CA ์ธ์ฆ์„œ ์ฒด์ธ์„ ์‹œ์Šคํ…œ ์ธ์ฆ์„œ ๋ชฉ๋ก์ด๋‚˜ certs.d ํด๋”์— ๋‘๋ฉด ๋œ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์‹œ์Šคํ…œ ์ธ์ฆ์„œ๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š์•„๋„ certs.d ํด๋”์— ca.crt๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ CA ์ธ์ฆ์„œ ์ฒด์ธ์„ ๋‘๊ฒŒ๋˜๋ฉด ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ ์€ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด Docker Desktop for Windows ์—์„œ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์˜ CA ์ธ์ฆ์„œ ์ฒด์ธ์„ ๊ตณ์ด ๋“ฑ๋กํ•˜์ง€ ์•Š์•„๋„ ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด์ ์œผ๋กœ ๋ณด์•˜์„๋•Œ ๋ชจ๋“  ์šด์˜์ฒด์ œ์—์„œ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋Š” ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„๋ณด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋„์ปค ์—”์ง„์—์„œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ธ์ฆ์„œ ์ฒด์ธ์„ ์ „๋‹ฌ๋ฐ›์•„์„œ ๋“ฑ๋กํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Released under the MIT License.