Machine: ๋กœ์ปฌ VM ๋„์ปค ๋จธ์‹ ์— CA ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2015๋…„ 09์›” 03์ผ  ยท  34์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/machine

์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ์‚ฌ์˜ ๋ฃจํŠธ CA ์ธ์ฆ์„œ๋Š” IT๊ฐ€ ๊ฐœ๋ฐœ์ž ์ปดํ“จํ„ฐ ๋ฐ ์„œ๋ฒ„์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค(OS์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์Œ). ๋กœ์ปฌ VM(virtualbox)๊ณผ ํ•จ๊ป˜ ๋„์ปค ๋จธ์‹ ์„ ์‚ฌ์šฉํ•  ๋•Œ ํšŒ์‚ฌ ๋„คํŠธ์›Œํฌ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด VM์— ํšŒ์‚ฌ ๋ฃจํŠธ CA ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด ๋กœ์ปฌ VM์— CA ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์—์„œ ๋Œ€๋‹ต์˜ ์‹œ์ž‘์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์„ค๋“๋ ฅ์žˆ๋Š”/์ ์ ˆํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฒฌ๊ธฐ์—… CA๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ๊ถŒ์žฅํ•˜๋‚˜์š”? ๋ชจ๋“  ์ธ์ฆ์„œ๋ฅผ ๋ฌถ์œผ์‹ญ๋‹ˆ๊นŒ?

areidentity

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๋งŽ์€ ํŒŒ๊ณ ๊ฐ€ ๋“ค์—ˆ๊ณ  ํ•ด๊ฒฐ์ฑ…์€ ๋‹นํ™ฉ์Šค๋Ÿฌ์šธ ์ •๋„๋กœ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ช…ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค). ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ต์€ ์—ฌ๊ธฐ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

๊ธฐ๋ณธ์ ์œผ๋กœ CA ์‹ ๋ขฐ ์ฒด์ธ์˜ pem(Base64 ์ธ์ฝ”๋”ฉ) ๋ฒ„์ „์„ /var/lib/boot2docker/certs/ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ca ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. boot2docker ๋ถ€ํŒ… ์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋™์œผ๋กœ ๊ฑฐ๊ธฐ์—์„œ pem ํŒŒ์ผ์„ ์„ ํƒํ•˜์—ฌ ssl ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์€ ํŠน์ˆ˜ ๋””๋ ‰ํ† ๋ฆฌ์ด๋ฉฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

$ docker-machine ssh default 'sudo mkdir /var/lib/boot2docker/certs'
$ docker-machine scp corp-ca.pem default:
$ docker-machine ssh default 'sudo mv corp-ca.pem /var/lib/boot2docker/certs/'
$ docker-machine restart default 

์ด๊ฒƒ์€ ๋” ๊ฐ„๋‹จํ•ด์•ผํ•˜๋ฏ€๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(#1799). ๋˜ํ•œ ์ „์ฒด ์‹ ๋ขฐ ์ฒด์ธ์—์„œ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์ธ์ฆ์„œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก pem ํŒŒ์ผ๋กœ ๊ฐ€๋“ ์ฐฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  34 ๋Œ“๊ธ€

์ด๊ฒƒ๋„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ ˆ์ฐจ(https://docs.docker.com/articles/https/)์— ๋”ฐ๋ผ ์ƒˆ CA์™€ ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. /var/lib/boot2docker ๋ฐ /var/lib/boot2docker/tls ํŒŒ์ผ์„ ๋„ฃ์œผ๋ ค๊ณ  ํ–ˆ์ง€๋งŒ /etc/init.d/docker ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์กฐ๊ธˆ ๋” ์กฐ์‚ฌํ–ˆ๊ณ  docker-machine์ด ์ƒ์„ฑํ•˜๋Š” ์ธ์ฆ์„œ๋กœ ํ˜ธ์ŠคํŠธ .docker/machines/machine/default์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ /var/lib/boot2docker์— ์žˆ๋Š” boot2docker VM์˜ ํŒŒ์ผ์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. vm์— ๋กœ๊ทธ์ธํ•˜๊ณ  ํŒŒ์ผ์„ ๊ต์ฒดํ•˜๊ณ  /var/lib/boot2docker/profile์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์‹œ์ž‘ ์‹œ์—๋„ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค(๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์•„๋งˆ๋„ 'docker-machine env default'๋กœ).

@oobles --tls-ca-cert , --tls-cert ๋ฐ --tls-key ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ธ์ฆ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

docker-machine --tls-ca-cert=my_company_ca.pem create --driver virtualbox vm ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

Error creating machine: error generating server cert: crypto/tls: private key does not match public key

์—ฌ๊ธฐ์„œ ์š”์ ์€ (๋Œ€๋ถ€๋ถ„์˜ ํšŒ์‚ฌ์—์„œ ์ถ”์ธก) ์ €๋Š” ํšŒ์‚ฌ CA๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ ํ‚ค๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— --tls-ca-key ์˜ต์…˜์„ ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ์ž์‹ ์˜ CA๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ž์ฒด ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๊นŒ?

๋‚ด VM์— ์žˆ๋Š” ๋„์ปค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํšŒ์‚ฌ CA์—์„œ ์„œ๋ช…ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํšŒ์‚ฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— docker login ์ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์…จ๋‚˜์š”?

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

+1. ์šฐ๋ฆฌ ์กฐ์ง์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋ฒ„์—์„œ:

  1. docker ๋ฌธ์„œ์—์„œ ์ƒํƒœ๋กœ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ํ‚ค์™€ ์ธ์ฆ์„œ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•˜๋Š” .pem ํŒŒ์ผ ์ƒ์„ฑ

๋„์ปค ๋จธ์‹ ์—์„œ:

  1. scp๋ฅผ ํ†ตํ•ด pem ํŒŒ์ผ์„ [email protected] :/home/docker์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. ssh [email protected] (๋น„๋ฐ€๋ฒˆํ˜ธ: tcuser)๋ฅผ ํ†ตํ•ด pem ํŒŒ์ผ์„ /var/lib/boot2docker/certs/๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋„์ปค ๋จธ์‹  ๋‹ค์‹œ ์‹œ์ž‘

https ์—ฐ๊ฒฐ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋‚ด ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ๊ฐ€ unable to find valid certification ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ์ค‘๊ฐ„ ZScaler CA ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋˜ํ•œ PAC ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก์‹œ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— +1. ๊ธฐ์กด CA(์ธ์ฆ์„œ ๋ฐ ํ‚ค) ๋ฐ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ(์ธ์ฆ์„œ ๋ฐ ํ‚ค)๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด docker-machine์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ docker ์—”์ง„์— ๋ฐฐํฌํ•  ๋•Œ ๊ธฐ์กด TLS ์ธํ”„๋ผ๋ฅผ ์‹ค์ œ๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • --tls-์„œ๋ฒ„ ์ธ์ฆ์„œ
  • --tls-์„œ๋ฒ„ ํ‚ค
docker-machine create -d ... \
  --tls-ca-cert cacert.pem \
  --tls-ca-key cacert.key \
  --tls-client-cert local_user.pem \
  --tls-client-key local_user.key \
  --tls-server-cert server.pem \
  --tls-server-key server.key

Error creating machine: Error running provisioning: error generating server cert: crypto/tls: failed to parse private key cacert.key ๊ฐ€ ์•”ํ˜ธ๋กœ ๋ณดํ˜ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

+1

๐Ÿ‘ , ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ธฐ์—… IT ์กฐ์ง์€ ๊ธฐ์—… ๋ฐฉํ™”๋ฒฝ ๋‚ด๋ถ€์—์„œ ๊ณต์šฉ ์ธํ„ฐ๋„ท์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹์‚ฌ์šฉ์ž ์ง€์ • HTTPS ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์ธ์ฆ์„œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์šฉ ๋„์ปค ํ—ˆ๋ธŒ์—๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์•„์ง ์ฐพ์•˜์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ ๊ธฐ์—… IT๋Š” ๋ชจ๋“  HTTPS ์ธ์ฆ์„œ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด MitM์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‹œ๋„ํ–ˆ์„ ๋•Œ ...
docker-machine --tls-ca-cert root.cer create --driver virtualbox default ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Error creating machine: Error running provisioning: error generating server cert: crypto/tls: private key does not match public key

๋‚˜๋Š” ๊ธฐ๊ณ„ ์ƒ์„ฑ ์‹œ tls ์ธ์ฆ์„œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์ƒ์„ฑ
๊ธฐ๊ณ„:

docker-machine scp ์ธ์ฆ์„œ ํŒŒ์ผ ๊ธฐ๋ณธ๊ฐ’:ca.crt
๋„์ปค ๋จธ์‹  ssh ๊ธฐ๋ณธ๊ฐ’
sudo mv ~/ca.crt /etc/docker/certs.d/docker.io/ca.crt

๊ทธ๋Ÿฌ๋ฉด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. mv ์•ž์— ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ mkdirํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ช…๋ น. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‚ด๋ถ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ˜ธ์ŠคํŠธ๋ฅผ docker.io๋กœ ๋Œ€์ฒดํ•˜์‹ญ์‹œ์˜ค.

2016๋…„ 8์›” 11์ผ ๋ชฉ์š”์ผ์— Andy Ruestow [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์•„์ง ์ฐพ์•˜์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ ๊ธฐ์—… IT๋Š” MitM์„ ์ˆ˜ํ–‰ํ•˜์—ฌ
๋ชจ๋“  HTTPS ์ธ์ฆ์„œ๋ฅผ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ ์‹œ๋„ํ–ˆ์„ ๋•Œ ...
docker-machine --tls-ca-cert root.cer ์ƒ์„ฑ --driver virtualbox ๊ธฐ๋ณธ๊ฐ’
๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋จธ์‹  ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: ํ”„๋กœ๋น„์ €๋‹ ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
์„œ๋ฒ„ ์ธ์ฆ์„œ: crypto/tls: ๊ฐœ์ธ ํ‚ค๊ฐ€ ๊ณต๊ฐœ ํ‚ค์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/machine/issues/1799#issuecomment -239175647,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAJD9p1tfX97V_OW4DgJkzxP86URi-C5ks5qezAsgaJpZM4F3GTM
.

+ 1 GE๋Š” Zscaler๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  MitM ์ธ์ฆ์„œ ๋งน๊ธ€๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ˜„์žฌ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ์ปดํ“จํ„ฐ์—์„œ docker๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+1, ์ด๊ฒƒ๋„ ์ง€๊ธˆ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

+1, ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

+1 ๊ธฐ์—… ํ™˜๊ฒฝ๋„ ํ”„๋ก์‹œ๊ฐ€ MitM ์ธ์ฆ์„œ ๋งน๊ธ€๋ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งŽ์€ ํŒŒ๊ณ ๊ฐ€ ๋“ค์—ˆ๊ณ  ํ•ด๊ฒฐ์ฑ…์€ ๋‹นํ™ฉ์Šค๋Ÿฌ์šธ ์ •๋„๋กœ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ช…ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค). ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ต์€ ์—ฌ๊ธฐ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

๊ธฐ๋ณธ์ ์œผ๋กœ CA ์‹ ๋ขฐ ์ฒด์ธ์˜ pem(Base64 ์ธ์ฝ”๋”ฉ) ๋ฒ„์ „์„ /var/lib/boot2docker/certs/ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ca ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. boot2docker ๋ถ€ํŒ… ์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋™์œผ๋กœ ๊ฑฐ๊ธฐ์—์„œ pem ํŒŒ์ผ์„ ์„ ํƒํ•˜์—ฌ ssl ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์€ ํŠน์ˆ˜ ๋””๋ ‰ํ† ๋ฆฌ์ด๋ฉฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

$ docker-machine ssh default 'sudo mkdir /var/lib/boot2docker/certs'
$ docker-machine scp corp-ca.pem default:
$ docker-machine ssh default 'sudo mv corp-ca.pem /var/lib/boot2docker/certs/'
$ docker-machine restart default 

์ด๊ฒƒ์€ ๋” ๊ฐ„๋‹จํ•ด์•ผํ•˜๋ฏ€๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(#1799). ๋˜ํ•œ ์ „์ฒด ์‹ ๋ขฐ ์ฒด์ธ์—์„œ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์ธ์ฆ์„œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก pem ํŒŒ์ผ๋กœ ๊ฐ€๋“ ์ฐฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@rpomeroy ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ ๋˜‘๊ฐ™์ด ํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ VM ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž๊ณ  ๊ทธ๋กœ ์ธํ•ด ์ธ์ฆ์„œ๋ฅผ ๋ชจ๋“  ๊ณณ์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Windows์šฉ Docker์— ๋Œ€ํ•œ ๋ชจ๋“  ์ˆ˜์ • ์‚ฌํ•ญ

@rpomeroy ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ์‹œ์Šคํ…œ์—์„œ ํšŒ์‚ฌ ๋ฃจํŠธ ca๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด /etc/docker/certs.d/hostname/ ์— ๋ฌผ๊ฑด์„ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด boot2docker ์•„๋ž˜์˜ Linux ๋ฐฐํฌํŒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ /etc/docker/certs์— ํ•ญ๋ชฉ์„ ๋„ฃ๋Š” ๊ฒƒ์€ ์‚ด์•„๋‚จ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. var/lib/boot2docker/certs๋งŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ณ  ์˜๊ตฌ์ ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ •๋ณด๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ boot2docker๋กœ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Windows 7 + VirtualBox(v5.2.6) +Docker Toolbox(Boot2Docker ๋ฒ„์ „ 18.02.-ce)๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋„์ปค ์‹คํ–‰ ์šฐ๋ถ„ํˆฌ /bin/echo 'Hello World'
๋กœ์ปฌ์—์„œ ' ubuntu:latest ' ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
C:\Program Files\Docker Toolboxdocker.exe: ๋ฐ๋ชฌ์˜ ์˜ค๋ฅ˜ ์‘๋‹ต: Get https://registry-1.docker.io/v2/ : x509: ์•Œ ์ˆ˜ ์—†๋Š” ๊ธฐ๊ด€์—์„œ ์„œ๋ช…ํ•œ ์ธ์ฆ์„œ.
'C:\Program Files\Docker Toolboxdocker.exe run --help'๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์†”๋ฃจ์…˜์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ ๋„์ปค VM์— ๋กœ๊ทธ์ธ
  2. ํšŒ์‚ฌ ๋ฃจํŠธ ์ธ์ฆ์„œ ๋‹ค์šด๋กœ๋“œ
  3. ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ:
    sudo mkdir /var/lib/boot2docker/certs
  4. ํšŒ์‚ฌ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํด๋”์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
    sudo cp Root-Ca1.crt Root-Ca2.crt /var/lib/boot2docker/certs
  5. ๊ธฐ๋ณธ VM ์žฌ๋ถ€ํŒ…
    ์ด์ œ ์ด๋ฏธ์ง€๋ฅผ ๋‹น๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

@kvvoronina ๋‹น์‹ ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  win 8.1์—์„œ docker toolbox๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋‹น์‹ ์˜ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(2๋‹จ๊ณ„ ๋ฐ 4๋‹จ๊ณ„์—์„œ ํšŒ์‚ฌ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค). ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•? ๊ฐ์‚ฌ

์•ˆ๋…•ํ•˜์„ธ์š”,

๋•๋ถ„์— ์œ ๋ น์ด ์ž‘๋™ํ•˜๊ณ  ์ด์ œ ๋‚ด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ์˜ˆ์ œ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. https://docs.docker.com/get-started/part2/#build -the-app
์ด ์˜ค๋ฅ˜๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt ---> Running in b700eb53b7b2 Collecting Flask (from -r requirements.txt (line 1)) Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAI LED] certificate verify failed (_ssl.c:726)'),)': /simple/flask/
๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Ubel, ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ฌ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋„์ปค ์‹œ์ž‘ ์—ฐ์Šต์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

@cmenjivar : ์•„๋‹ˆ์š”, ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค...

@Ubel : ์Šต๋‹ˆ๋‹ค . ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ ํ˜ธ์ŠคํŒ…๋œ 3๊ฐœ์˜ Python ํ˜ธ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

RUN pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org -r requirements.txt

@cmenjivar : ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ nuget ํŒจํ‚ค์ง€ URL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์ž‘์—…์„ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ Windows ํ˜ธ์ŠคํŠธ ๋ฐ Windows ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ ๊ฐ€์น˜์— ๋Œ€ํ•ด @rpomeroy ๋Š” ์ •๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...

Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ "Docker ๋น ๋ฅธ ์‹œ์ž‘ ํ„ฐ๋ฏธ๋„"์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ ์ ˆํ•œ ํ™˜๊ฒฝ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. "$"๋Š” ํ”„๋กฌํ”„ํŠธ์ด๋ฏ€๋กœ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋ถ™์—ฌ๋„ฃ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์šด๋กœ๋“œ ํด๋”๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด cd ~/Downloads ๋ฅผ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฐ ์ธ์ฆ ๊ธฐ๊ด€(์ค‘๊ฐ„ ๋˜๋Š” ๊ธฐํƒ€)์— ๋Œ€ํ•ด ๋‘ ๊ฐœ์˜ ์ค‘๊ฐ„ ๋‹จ๊ณ„(corp-ca.pem)๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. corp-ca-root.pem, corp-ca-intermediate.pem ๋ฐ corp-issuing-ca.pem์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: corp-*.pem .

์œ„์˜ @rpomeroy ์—์„œ ๋ณต์‚ฌ:

$ docker-machine ssh default 'sudo mkdir /var/lib/boot2docker/certs'
$ docker-machine scp corp-ca.pem default:
$ docker-machine ssh default 'sudo mv corp-ca.pem /var/lib/boot2docker/certs/'
$ docker-machine restart default 

--tls-cert, --tls-key ๋ฐ --tls-ca-cert๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ž˜๋ชป๋œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ธ์ฆ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•˜๊ณ  ์‹ถ์€ ์œ ์ผํ•œ ์š”์ ์€ /etc์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ "๋ถˆ๋ณ€"์ด ์•„๋‹ˆ๋ฉฐ ์‹ค์ œ๋กœ๋Š” "์ž„์‹œ"(tmpfs)๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. /var/lib/boot2docker/certs์˜ ์ •๋ณด๋Š” /etc/docker/certs...์˜ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋‹ค์‹œ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

์–ด์จŒ๋“  docker-machine์ด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์ด ์‹ ๋ขฐํ•˜๋Š” ๋ชจ๋“  ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์‹ ๋ขฐํ•œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜์ด Windows์šฉ Docker(Hyper-V) ์„ค์ •์ด ์•„๋‹Œ boot2docker ์„ค์ •์—์„œ๋งŒ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด ์†”๋ฃจ์…˜์„ ๋– ๋‚œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด( @rpomeroy ์˜ ์†”๋ฃจ์…˜)๋„ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” Windows ํ™˜๊ฒฝ์šฉ Docker์™€ ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ์Šค๋ ˆ๋“œ๋ฅผ 6๋ฒˆ ์ •๋„ ์ฝ๊ณ  ๋ฌด์‹œํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rpomeroy ์˜ ์†”๋ฃจ์…˜์€ boot2docker์™€ Windows์šฉ Docker ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํšŒ์‚ฌ .cer ์ธ์ฆ์„œ๋ฅผ ๋‚ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ /etc/pki/ca-trust/source/anchors ๋””๋ ‰ํ† ๋ฆฌ์— ์—…๋กœ๋“œํ•˜๊ณ  ์•„๋ž˜ ๋ช…๋ น์„ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

update-ca-trust ํ™œ์„ฑํ™”
์—…๋ฐ์ดํŠธ ์นด ํŠธ๋Ÿฌ์ŠคํŠธ

์œ„์˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ curl์—์„œ ํ•„์š”ํ•œ ์ถœ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋ผ์–ด๋“ค๊ณ ..

์ปจํ…Œ์ด๋„ˆ์— ์ด๋Ÿฌํ•œ ๋งˆ์šดํŠธ๋ฅผ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ์„ฑ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    volumes:
      - /etc/ssl/certs:/etc/ssl/certs
      - /usr/share/ca-certificates:/usr/share/ca-certificates

Windows๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด Windows Docker ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰