Moby: 개인 λ ˆμ§€μŠ€νŠΈλ¦¬ μ•‘μ„ΈμŠ€: x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ

에 λ§Œλ“  2014λ…„ 10μ›” 30일  Β·  39μ½”λ©˜νŠΈ  Β·  좜처: moby/moby

μ—¬κΈ° 에 따라 nginx둜 docker-registryλ₯Ό μ„€μ •

'도컀 둜그인'을 μ‹€ν–‰ν•˜λ©΄ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

# docker login -u docker -p docker -e [email protected] https://dev.registry.com
2014/10/30 11:12:08 Error response from daemon: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

도컀 데λͺ¬μ˜ 좜λ ₯:

[debug] server.go:1181 Calling POST /auth
[info] POST /v1.15/auth
[47687bb1] +job auth()
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[47687bb1] -job auth() = ERR (1)
[error] server.go:1207 Handler for POST /auth returned error: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[error] server.go:110 HTTP Error: statusCode=500 Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

μ½”λ“œλ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 둜그인 κΈ°λŠ₯에 'tlsConfig'κ°€ ν•„μš”ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
https://github.com/docker/docker/blob/master/registry/auth.go#L163

처럼
https://github.com/docker/docker/blob/master/registry/registry.go#L49

# docker --version
Docker version 1.3.0, build c78088f
# curl --cacert ca.pem https://dev.registry.com/v1/_ping                 
true
# curl --cacert ca.pem -u docker:docker https://dev.registry.com/v1/users/
"OK"

# curl -u docker:docker https://dev.registry.com/v1/users/                
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

κ°μ‚¬ν•©λ‹ˆλ‹€. μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Ubuntu/Debianμ—μ„œ ν•΄λ‹Ή 단계:

  1. CA μΈμ¦μ„œλ₯Ό /usr/local/share/ca-certificates λ³΅μ‚¬ν•©λ‹ˆλ‹€.
  2. sudo update-ca-certificates
  3. sudo μ„œλΉ„μŠ€ 도컀 μž¬μ‹œμž‘

κ·ΈλŸ¬λ‚˜ μ—¬κΈ°μ—λŠ” μ—¬μ „νžˆ 버그가 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—λŠ” /etc/docker/certs.d/<registry> 에 CA μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•˜λΌκ³  λ‚˜μ™€ 있으며, λΆ„λͺ…νžˆ μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μΈμ¦μ„œλ₯Ό μ „μ—­μ μœΌλ‘œ μ„€μΉ˜ν•œ ν›„ /etc/docker/certs.d μ—μ„œ μΈμ¦μ„œλ₯Ό μ œκ±°ν•˜κ³  Dockerλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆλŠ”λ° μ—¬μ „νžˆ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  39 λŒ“κΈ€

@hustcat Docker 1.3.1λΆ€ν„° --insecure-registry dev.registry.com:5000 λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ ˆμ§€μŠ€νŠΈλ¦¬κ°€ μˆ˜μ‹  λŒ€κΈ° 쀑인 포트둜 5000을 λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ§€κΈˆ λ‹«κ³  μžˆμ§€λ§Œ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμœΌλ©΄ λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš”.

λ‚˜λŠ” 이것을 μ΄ν•΄ν•˜λŠ” 데 λͺ‡ 뢄이 κ±Έλ Έκ³  λˆ„κ΅°κ°€ μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ…령은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

%> docker --insecure-registry=docker-registry.example.com:8080 login https://docker-registry.example.com:8080

1.3에 λŒ€ν•œ μŠ€μœ„μΉ˜λ₯Ό λ°°μΉ˜ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

λ‚˜λŠ” 같은 λ¬Έμ œμ— 직면 ν•΄μžˆλ‹€. μΈμ¦μ„œ μœ νš¨μ„± κ²€μ‚¬λŠ” ping(및 ν‘Έμ‹œ/풀링)에 λŒ€ν•΄ μž‘λ™ν•˜μ§€λ§Œ λ‘œκ·ΈμΈμ—λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

--insecure-registry ν”Œλž˜κ·ΈλŠ” ν•΄κ²° 방법이지 μˆ˜μ • 사항이 μ•„λ‹™λ‹ˆλ‹€. CA μΈμ¦μ„œκ°€ /etc/docker/certs.d/<registry> λ‘œλ“œλ˜λ©΄ μΈμ¦μ„œ μœ νš¨μ„± 검사가 μž‘λ™ν•΄μ•Ό ν•˜μ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

--insecure-registry RedHat 7μ—μ„œ docker 1.3.2λ₯Ό μ‚¬μš© μ€‘μž…λ‹ˆλ‹€.

[ root@ip-10-2-20-209 ec2-user]# docker --insecure-registry=qa.docker.repo 둜그인 https://qa.docker.repo
μ‚¬μš©μž 이름: qa
λΉ„λ°€λ²ˆν˜Έ:
이메일: [email protected]
2015/01/19 14:26:40 데λͺ¬μ˜ 였λ₯˜ 응닡: μ„œλ²„ 였λ₯˜: Post https://qa.docker.repo/v1/users/ : x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ

μƒμ„±λœ ca.pem νŒŒμΌμ„ μ‚¬μš©ν•  λ•Œ curl이 μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

컬 --cacert /home/ec2-user/ca.pem -u qa:xxxxx https://qa.docker.repo/v1/users/
"μ’‹μ•„μš”"

docker 버전 1.3.2 및 opensuse 13.1μ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  컬 ν˜ΈμΆœμ— --cafile cacert.pem을 μ •μ μœΌλ‘œ μ „λ‹¬ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ(도컀가 λ‚΄λΆ€μ μœΌλ‘œ 컬을 μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν–ˆκΈ° λ•Œλ¬Έμ—) 이 방법도 도움이 λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

도움을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”.
마리였

이 문제λ₯Ό λ°œκ²¬ν•˜κΈ° 전에 #10150을 μ—΄μ—ˆμŠ΅λ‹ˆλ‹€. 그듀은 같은 문제둜 λ³΄μž…λ‹ˆλ‹€.

λ‚˜λŠ” 같은 λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Archlinux ν΄λΌμ΄μ–ΈνŠΈ 1.4.1 및 곡식 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” λ ˆμ§€μŠ€νŠΈλ¦¬. 생각이 μžˆμœΌμ‹  λΆ„ κ³„μ‹ κ°€μš”?

ca-certificatesλ₯Ό 톡해 μ „μ—­μœΌλ‘œ μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•œ 경우 μ „μ—­ SSL μΈμ¦μ„œλ₯Ό λ‹€μ‹œ λ‘œλ“œν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 도컀λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, λ‚΄ 것은 μ—¬μ „νžˆ β€‹β€‹μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ 직μž₯μ—μ„œ λ§Œλ‚¬μŠ΅λ‹ˆλ‹€. :)

grimmyμ—κ²Œ 감사λ₯Ό ν‘œν•©λ‹ˆλ‹€. κ²°κ΅­μ—λŠ” μ†μž„μˆ˜λ₯Ό 썼고 λ§ˆμΉ¨λ‚΄ μž‘λ™ν•©λ‹ˆλ‹€. λ‚˜λŠ” ν–ˆλ‹€:

  1. http://curl.haxx.se/docs/caextract.html μ—μ„œ cacert.pem을 κ°€μ Έμ˜΅λ‹ˆλ‹€
  2. cacert.pem νŒŒμΌμ„ /etc/pki/trust/anchors/에 λ³΅μ‚¬ν•©λ‹ˆλ‹€.
  3. sudo update-ca-certificates
  4. sudo systemctl 도컀 쀑지
  5. sudo systemctl 도컀 μ‹œμž‘

마리였

κ°μ‚¬ν•©λ‹ˆλ‹€. μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Ubuntu/Debianμ—μ„œ ν•΄λ‹Ή 단계:

  1. CA μΈμ¦μ„œλ₯Ό /usr/local/share/ca-certificates λ³΅μ‚¬ν•©λ‹ˆλ‹€.
  2. sudo update-ca-certificates
  3. sudo μ„œλΉ„μŠ€ 도컀 μž¬μ‹œμž‘

κ·ΈλŸ¬λ‚˜ μ—¬κΈ°μ—λŠ” μ—¬μ „νžˆ 버그가 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—λŠ” /etc/docker/certs.d/<registry> 에 CA μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•˜λΌκ³  λ‚˜μ™€ 있으며, λΆ„λͺ…νžˆ μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μΈμ¦μ„œλ₯Ό μ „μ—­μ μœΌλ‘œ μ„€μΉ˜ν•œ ν›„ /etc/docker/certs.d μ—μ„œ μΈμ¦μ„œλ₯Ό μ œκ±°ν•˜κ³  Dockerλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆλŠ”λ° μ—¬μ „νžˆ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

@rhasselbaum이 μ–ΈκΈ‰ν–ˆλ“―μ΄ 이것을 λ‹€μ‹œ μ—΄λ©΄ +1

--insecure-registryκ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆκΉŒ?

$ docker --version
Docker version 1.8.2, build 0a8c2e3

$ docker --insecure-registry
flag provided but not defined: --insecure-registry
See 'docker --help'.

이제 무엇을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

도컀 ꡬ성 파일둜 μ΄λ™ν•˜μ—¬ μ„€μ •λ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
도컀 ν”„λ‘œμ„ΈμŠ€μ—μ„œ --insecure-registry ν”Œλž˜κ·Έκ°€ ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

2015λ…„ 9μ›” 16일 μˆ˜μš”μΌ μ˜€μ „ 3:01, Chris Withers μ•Œλ¦Ό @github.com
썼닀:

--insecure-registryκ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆκΉŒ?

$ 도컀 --버전
Docker 버전 1.8.2, λΉŒλ“œ 0a8c2e3

$ docker --insecure-registry
ν”Œλž˜κ·Έκ°€ μ œκ³΅λ˜μ—ˆμ§€λ§Œ μ •μ˜λ˜μ§€ μ•ŠμŒ: --insecure-registry
'도컀 --help'λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

이제 무엇을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/docker/docker/issues/8849#issuecomment -140693481.

docker pull λͺ…령에 λŒ€ν•΄ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν–ˆμœΌλ©° λ‹€μŒμ΄ μž‘λ™ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
'.crt' 파일인 SSL μΈμ¦μ„œλ₯Ό 디렉토리에 λ³΅μ‚¬ν•©λ‹ˆλ‹€.

sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt
Ubuntuκ°€ /usr/share/ca-certificates와 κ΄€λ ¨λœ '.crt' 파일의 경둜λ₯Ό /etc/ca-certificates.conf에 μΆ”κ°€ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

sudo dpkg-reconfigure ca μΈμ¦μ„œ

μ‹œμŠ€ν…œ μƒνƒœκ°€ μ€‘μš”ν•˜μ§€ μ•Šμ€ 경우 docker-machine rm <machine-name> ν•˜κ³  λ‹€λ₯Έ μƒνƒœλ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€ ;)

LetsEncryptλ₯Ό μ‚¬μš©ν•˜κ³  μ μ ˆν•œ TLS 없이 아무 것도 μ‹€ν–‰ν•˜μ§€ μ•ŠμœΌλ €λ©΄ 쀑간(예: REGISTRY_HTTP_TLS_CERTIFICATE=.../fullchain.pem)을 ν¬ν•¨ν•œ μΈμ¦μ„œμ˜ 전체 체인을 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. Docker의 이 였λ₯˜.

건배!

μš°λΆ„νˆ¬μ—μ„œ. 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 경우:

  • x509: [IP μ£Όμ†Œ λ˜λŠ” 도메인 이름]에 λŒ€ν•œ μΈμ¦μ„œμ˜ μœ νš¨μ„±μ„ 검사할 수 μ—†μŠ΅λ‹ˆλ‹€. IP SAN이 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

Docker λ ˆμ§€μŠ€νŠΈλ¦¬μ—μ„œ μΈμ¦μ„œλŠ” 여기에 μ„€λͺ…λœ λŒ€λ‘œ subjectAltName으둜 μ»΄νŒŒμΌλ˜μ–΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.
https://docs.docker.com/engine/security/https/

편의λ₯Ό μœ„ν•œ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
$ echo subjectAltName = IP:10.10.10.20,IP:127.0.0.1 > extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -extfile extfile.cnf

참고둜 λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ μΈμ¦μ„œμ— 주체 λŒ€μ²΄ 이름이 μžˆλŠ”μ§€ 확인할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
openssl x509 -in certificate.crt -text -noout

κ·ΈλŸ¬λ‚˜ Ubuntu 14 ν΄λΌμ΄μ–ΈνŠΈ(예: Docker Engine)μ—μ„œλŠ”
이 였λ₯˜λŠ” λ‹€μŒμœΌλ‘œ μ΄μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.
x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ

Ubuntu 14λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄.
Docker 엔진에 μ‚¬μš©λ˜λŠ” ꡬ성 파일(Docker Registry에 μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©ν•˜λ €λŠ”):
/etc/default/도컀

κ±°κΈ°μ—μ„œ 도컀 μ˜΅μ…˜μ„ 지정해야 ν•©λ‹ˆλ‹€.
DOCKER_OPTS = "- λΆˆμ•ˆ - λ ˆμ§€μŠ€νŠΈλ¦¬ myinsecure. co.krμ—μ„œ : 5000 "

그런 λ‹€μŒ 데λͺ¬μ„ λ‹€μ‹œ μ‹œμž‘ν•©λ‹ˆλ‹€(μ‚¬μš©μžκ°€ 도컀 μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•  수 μ—†λŠ” 경우 sudo μΆ”κ°€).
$ [sudo] μ„œλΉ„μŠ€ 도컀 μž¬μ‹œμž‘

값은 도메인 이름일 ν•„μš”λŠ” μ—†μœΌλ©° μΈμ¦μ„œκ°€ λ“±λ‘λœ 것과 μΌμΉ˜ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. ν¬νŠΈκ°€ μžˆλŠ” IP μ£Όμ†Œκ°€ 있고 이것이 μž‘λ™ν•©λ‹ˆλ‹€... (예: 100.100.100.100:100)

이 λͺ¨λ“  것이 λ‚˜μ—κ²Œ ν•˜λ£¨κ°€ κ±Έλ ΈμœΌλ―€λ‘œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²Œ μœ μš©ν•˜κΈ°λ₯Ό λ°”λΌλ©΄μ„œ 이것을 κ²Œμ‹œν•©λ‹ˆλ‹€ ...

@JazzDeben 의견 κ°μ‚¬ν•©λ‹ˆλ‹€! ꡉμž₯히 μœ μš©ν•˜λ‹€ ! Let's Encript certbot 생성 μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•˜λŠ” 방법을 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.
λ ˆμ§€μŠ€νŠΈλ¦¬ μ„œλ²„μ—μ„œ 이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

tls: client didn't provide a certificate

Chromeμ—μ„œ ERR_BAD_SSL_CLIENT_AUTH_CERT 에 λŒ€ν•΄ λΆˆν‰ν•©λ‹ˆλ‹€.
λ‚΄κ°€ ν¬ν•¨ν•œλ‹€λ©΄

  tls:
...
    clientcas:
      - /path/to/ca.pem

@cjw296 RHEL7.2의 경우 /usr/lib/systemd/docker.service νŒŒμΌμ„ νŽΈμ§‘ν•˜κ³  ExecStart 행에 --insecure-registry=your.docker.registry.com .

< ExecStart=/usr/bin/dockerd
---
> ExecStart=/usr/bin/dockerd --insecure-registry=your.docker.registry.com

그런 λ‹€μŒ sudo systemctl daemon-reload λ₯Ό μ‹€ν–‰ν•˜μ—¬ ꡬ성 λ³€κ²½ 사항을 μ„ νƒν•œ λ‹€μŒ sudo systemctl restart docker . 이제 μž‘λ™ν•©λ‹ˆλ‹€.

μ†”μ§νžˆ λ§ν•΄μ„œ, λ‚˜λŠ” μ—¬μ „νžˆ μ²΄κ³„ν™”λœ 멍청이이고 μ•„λ§ˆλ„ 이것을 더 κΉ”λ”ν•˜κ²Œ ν•  수 μžˆλŠ” 더 쒋은 방법이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ„ˆλ¬΄ μ˜€λž«λ™μ•ˆ 이 문제둜 어렀움을 κ²ͺμ—ˆκ³  ν•΄κ²° 방법을 κ²Œμ‹œν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. μ €λ₯Ό μ˜¬λ°”λ₯Έ λ°©ν–₯으둜 μ΄λŒμ–΄μ£Όμ‹  @cdub50λ‹˜ κ°μ‚¬ν•©λ‹ˆλ‹€.

@david-drinn Fedora 25의 경우 λΉ„μŠ·ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμ§€λ§Œ docker daemon config ( in /usr/lib/systemd/system/docker.service ) μ†ŒμŠ€ 섀정이 ꡬ성 νŒŒμΌμ—μ„œ μ„€μ •λ˜μ—ˆκΈ° λ•Œλ¬Έμ— /etc/sysconfig/docker μ—μ„œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

< # INSECURE_REGISTRY='--insecure-registry='
---
> INSECURE_REGISTRY='--insecure-registry=your.docker.registry.com'

curl이 μž‘λ™ν•˜κ³  dockerκ°€ μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
o "/etc/docker/certs.d//..." 디렉토리 및 파일(개인 λ ˆμ§€μŠ€νŠΈλ¦¬μ—λ§Œ μœ νš¨ν•©λ‹ˆκΉŒ?)
o "/etc/docker/daemon.json" νŒŒμΌμ— "tlscert" ν•­λͺ©μ„ μΆ”κ°€ν•˜μ—¬ dockerdκ°€ curlκ³Ό λ™μΌν•œ μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ λ°œμƒν•˜κ³  자체 μ„œλͺ…λœ μΈμ¦μ„œκ°€ 있고 "insecure-registry" μ§€μ‹œλ¬Έμ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ €λŠ” 경우 자체 μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό /etc/docker/certs.d/{host}/ 에 λ‘œλ“œν•΄μ•Ό ν•©λ‹ˆλ‹€. 그것듀을 λ‘œλ“œν•œ ν›„μ—λŠ” 도컀 데λͺ¬μ„ λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” 것을 κΈ°μ–΅ν•˜μ‹­μ‹œμ˜€. μ’€ 더 μžμ„Ένžˆ μ„€λͺ…ν•˜μžλ©΄.....

λ ˆμ§€μŠ€νŠΈλ¦¬κ°€ https://exampleregistry.com μ—μ„œ ν˜ΈμŠ€νŒ…λ˜λŠ” 경우 자체 μ„œλͺ…λœ μΈμ¦μ„œκ°€ ν¬ν•¨λœ /etc/docker/certs.d/exampleregistry.com λΌλŠ” 디렉토리가 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이제 x509 였λ₯˜ 없이 docker login exampleregistry.com λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이제 이 λͺ¨λ“  것에 λŒ€ν•œ 주의 사항이 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ΄μœ μ—μ„œμΈμ§€ docker login exampleregistry.com:443 와 같이 둜그인 λͺ…λ Ήμ—μ„œ 포트λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•˜κ³  μ‹Άλ‹€κ³  κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. 자체 μ„œλͺ…λœ μΈμ¦μ„œκ°€ /etc/docker/certs.d/exampleregistry.com:443/ 폴더 μ•ˆμ— μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. DockerλŠ” 포트λ₯Ό μ‚¬μš©ν•  λ•Œλ§Œ 호슀트 이름을 기반으둜 ν™•μΈν•˜λŠ” μΈμ¦μ„œμ— λŒ€ν•΄ κ°€μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•‘μ„ΈμŠ€ν•˜λ €λŠ” ν¬νŠΈκ°€ ν¬ν•¨λœ 폴더 이름에 자체 μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό λ‘œλ“œν•˜μ—¬ ν¬νŠΈλ³„λ‘œ μ‹€μ œλ‘œ μΈμ¦μ„œλ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이것이 포트λ₯Ό μ‚¬μš©ν•˜μ—¬ 도컀 λ ˆμ§€μŠ€νŠΈλ¦¬μ— μ—°κ²°ν•˜λŠ” λ§Žμ€ 디버깅을 μ ˆμ•½ν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

제 κ²½μš°μ—λŠ” ν•΄κ²°λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
nexus OSS μ €μž₯μ†Œμ— 자체 μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 데λͺ¬μ˜ 였λ₯˜ 응닡: Get https://:10250/v1/users/: x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ

.crt νŒŒμΌμ„ /etc/docker/certs.d 및 /usr/share/ca-certificatesλ₯Ό λ‚΄ μš°λΆ„νˆ¬ 16.04 om 인텔 μ‹œμŠ€ν…œμ— λ°°μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ update-ca-certificatesλ₯Ό μ‹€ν–‰ν•˜κ³  dockerλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 λ‚΄ μΈμ¦μ„œ 파일 nexus.certμž…λ‹ˆλ‹€.
$ openssl x509 - nexus.crt - ν…μŠ€νŠΈ

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Validity
            Not Before: Jul 17 20:28:26 2017 GMT
            Not After : Jul 17 20:28:26 2018 GMT
        Subject: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:b8:2c:97:c2:e4:bf:7a:e1:49:22:9b:a2:90:7a:
                    3a:de:3d:d3:f5:e9:c9:8b:9b:c8:13:37:4b:36:32:
                    4f:a7:0d:b9:53:4c:f4:10:fa:e7:d2:64:a5:e9:0a:
                    32:49:c3:aa:f8:2c:27:82:94:85:c3:11:07:a7:d0:
                    6c:0a:4a:45:66:94:cb:d3:27:28:cd:58:43:5b:f9:
                    e1:66:97:52:81:be:03:53:d5:e1:84:0c:4f:89:fd:
                    78:6d:8f:88:cf:29:af:6d:14:2e:2e:dc:d4:f3:87:
                    1c:73:5e:35:cb:d2:95:58:20:55:c0:f5:89:e1:40:
                    64:16:cd:25:a8:bd:6b:6a:9c:21:b0:97:d2:67:63:
                    5c:3c:4a:2c:21:1a:72:3a:68:c6:a0:e2:ea:4d:f8:
                    db:bd:02:81:93:db:60:51:ad:6e:bf:d7:7d:45:43:
                    95:e1:a5:d7:de:36:76:7c:a4:d7:4a:7f:b2:b1:98:
                    75:7d:27:2c:1d:ad:03:1b:5f:8a:ac:12:5e:76:9c:
                    2a:f7:03:b0:51:6c:23:a4:df:08:1f:02:0c:42:b6:
                    ff:7f:33:16:b0:86:fc:92:e7:db:7a:3b:a2:70:30:
                    f4:79:fa:f1:0f:75:0f:32:69:79:97:73:f4:de:11:
                    3e:bf:f8:63:49:21:dc:02:c6:ef:de:91:74:03:6d:
                    21:56:2e:c6:04:d1:02:30:73:6e:52:c7:93:07:6c:
                    f9:98:ff:1c:cc:dd:da:c7:45:2e:7b:ab:04:33:fe:
                    39:6c:5d:d5:dd:46:ae:25:d6:fd:9d:01:ae:8a:e8:
                    14:18:cc:6e:64:e4:11:8a:ce:3d:30:56:6d:0c:a7:
                    83:90:6c:f5:14:36:16:39:cc:10:7a:db:35:f6:9c:
                    68:da:84:f6:9c:07:d0:3e:b7:52:54:03:75:9a:ae:
                    eb:79:b5:5f:cb:10:cf:25:08:ae:f7:b3:13:79:f4:
                    4a:98:72:08:e3:23:e2:22:a1:31:47:41:ec:a4:76:
                    42:db:1c:46:31:3c:a2:14:14:94:bf:4f:1e:1f:85:
                    a0:9c:4c:3d:af:92:7a:90:d1:ad:23:f0:ea:3e:7d:
                    b4:21:79:f9:82:3a:16:04:42:60:b8:5d:15:1c:48:
                    9b:1e:b5:9b:0d:1f:aa:56:aa:a2:1a:a5:6f:ef:ab:
                    2a:22:6d:05:19:c0:2b:dc:46:c4:c2:4a:f8:89:25:
                    fc:dc:e6:ab:7b:8a:76:de:47:a3:e2:00:0e:d7:e8:
                    bd:86:86:d3:8d:6b:56:63:bf:40:1e:31:d7:74:fe:
                    63:fc:7e:e2:9f:21:31:1d:39:2a:44:a5:56:fd:dd:
                    66:5e:c2:4f:94:c7:ee:26:89:1a:d1:6b:13:00:f6:
                    4f:72:9b
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         25:26:77:55:50:0a:66:39:5f:79:c7:5e:af:5f:54:e2:92:6f:
         62:e5:90:3a:0f:de:9b:7a:02:df:66:47:c5:71:61:91:c4:74:
         ba:0e:55:34:47:0b:72:c5:f5:27:5d:d0:d6:06:a9:f7:5c:d5:
         41:30:4c:0f:0b:3a:3c:64:13:a0:28:9b:10:92:0e:c8:eb:e8:
         0f:00:ba:54:9d:d4:7a:8c:cd:f7:91:a9:55:69:0f:9b:12:77:
         e9:f2:28:c8:cb:07:d4:ab:a4:eb:b2:3d:ae:b4:6d:7a:15:85:
         cb:07:f6:e3:6b:58:1c:26:0a:ad:d5:e6:7c:b7:e7:19:6c:d1:
         31:80:5e:cb:17:85:88:a2:6c:fc:fe:3c:28:1f:f9:87:a6:0f:
         f6:85:d2:c0:76:25:fb:52:2f:8a:99:0c:88:4e:bd:84:6b:da:
         81:b4:41:f1:bf:1c:e7:7d:93:a5:e2:d7:66:8a:63:bf:9c:c4:
         ad:ea:cb:c4:c6:7d:1f:95:35:87:60:8b:e8:23:e8:4e:36:43:
         5e:86:de:c4:35:e0:29:7a:93:90:a4:9b:c3:d1:8e:13:55:9f:
         ea:ab:52:0a:a8:a0:54:cf:f4:5e:ff:12:40:09:43:3c:e7:55:
         e7:c1:de:62:ce:21:39:f5:d3:51:7a:92:f2:b2:3c:75:8c:1f:
         bd:aa:13:63
-----BEGIN CERTIFICATE-----
MIIEPDCCAyQCAQEwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCSU4xEjAQBgNV
BAgTCUthcm5hdGFrYTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQwwCgYDVQQKEwNJQk0x
DDAKBgNVBAsTA2x0YzERMA8GA1UEAxMIbHRjeC5jb20wHhcNMTcwNzE3MjAyODI2
WhcNMTgwNzE3MjAyODI2WjBkMQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0
YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDDAKBgNVBAoMA0lCTTEMMAoGA1UECwwD
bHRjMREwDwYDVQQDDAhsdGN4LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBALgsl8Lkv3rhSSKbopB6Ot490/XpyYubyBM3SzYyT6cNuVNM9BD659Jk
pekKMknDqvgsJ4KUhcMRB6fQbApKRWaUy9MnKM1YQ1v54WaXUoG+A1PV4YQMT4n9
eG2PiM8pr20ULi7c1POHHHNeNcvSlVggVcD1ieFAZBbNJai9a2qcIbCX0mdjXDxK
LCEacjpoxqDi6k34270CgZPbYFGtbr/XfUVDleGl1942dnyk10p/srGYdX0nLB2t
AxtfiqwSXnacKvcDsFFsI6TfCB8CDEK2/38zFrCG/JLn23o7onAw9Hn68Q91DzJp
eZdz9N4RPr/4Y0kh3ALG796RdANtIVYuxgTRAjBzblLHkwds+Zj/HMzd2sdFLnur
BDP+OWxd1d1GriXW/Z0BroroFBjMbmTkEYrOPTBWbQyng5Bs9RQ2FjnMEHrbNfac
aNqE9pwH0D63UlQDdZqu63m1X8sQzyUIrvezE3n0SphyCOMj4iKhMUdB7KR2Qtsc
RjE8ohQUlL9PHh+FoJxMPa+SepDRrSPw6j59tCF5+YI6FgRCYLhdFRxImx61mw0f
qlaqohqlb++rKiJtBRnAK9xGxMJK+Ikl/Nzmq3uKdt5Ho+IADtfovYaG041rVmO/
QB4x13T+Y/x+4p8hMR05KkSlVv3dZl7CT5TH7iaJGtFrEwD2T3KbAgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBACUmd1VQCmY5X3nHXq9fVOKSb2LlkDoP3pt6At9mR8Vx
YZHEdLoOVTRHC3LF9Sdd0NYGqfdc1UEwTA8LOjxkE6AomxCSDsjr6A8AulSd1HqM
zfeRqVVpD5sSd+nyKMjLB9SrpOuyPa60bXoVhcsH9uNrWBwmCq3V5ny35xls0TGA
XssXhYiibPz+PCgf+YemD/aF0sB2JftSL4qZDIhOvYRr2oG0QfG/HOd9k6Xi12aK
Y7+cxK3qy8TGfR+VNYdgi+gj6E42Q16G3sQ14Cl6k5Ckm8PRjhNVn+qrUgqooFTP
9F7/EkAJQzznVefB3mLOITn101F6kvKyPHWMH72qE2M=
-----END CERTIFICATE-----

@abdasgupta : μ €μž₯μ†Œλ₯Ό "말릴" 수 μžˆμŠ΅λ‹ˆκΉŒ?
κ·Έλ ‡λ‹€λ©΄ μ–΄λ–€ μΈμ¦μ„œμ˜ 파일 컬이 μ‚¬μš© 쀑인지 ν™•μΈν•˜κ³  λ™μΌν•œ νŒŒμΌμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ daemon.json νŒŒμΌμ„ νŽΈμ§‘ν•˜μ‹­μ‹œμ˜€.
제 κ²½μš°μ—λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
[ root@localhost ]# 고양이 /etc/docker/daemon.json
{ "μ•ˆμ „ν•˜μ§€ μ•Šμ€ λ ˆμ§€μŠ€νŠΈλ¦¬":["registry-1.docker.io/v2:5000"],
"디버그": μ°Έ,
"tlscert": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" <<<<======
}

μ•ˆμ „ν•˜μ§€ μ•Šμ€ λ ˆμ§€μŠ€νŠΈλ¦¬λ₯Ό μ‚¬μš©ν•˜κ³  싢지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그것 μ—†μ΄λŠ” μ‹€ν–‰ν•  수 μ—†μŠ΅λ‹ˆκΉŒ? λ˜ν•œ μΈμ¦μ„œλŠ” repo의 것과 λ™μΌν•©λ‹ˆλ‹€. cz κ±°κΈ°μ—μ„œ λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆμ „ν•˜μ§€ μ•Šμ€ λ ˆμ§€μŠ€νŠΈλ¦¬ 없이 μ‹€ν–‰ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. "curl" λͺ…λ ΉμœΌλ‘œ μ €μž₯μ†Œμ— 도달할 수 μžˆμŠ΅λ‹ˆκΉŒ?
μΉœμ• ν•˜λŠ”.

De : Abhishek Dasgupta [mailto:[email protected]]
νŠΉμ‚¬ : λ§ˆλ”” 18 juillet 2017 18:30
Γ€ : λͺ¨λΉ„/λͺ¨λΉ„
μ°Έμ‘°: ν”„λ ˆλ°λ¦­ μΉ΄μŠ€ν…”λž­; 논평
Objet : Re: [moby/moby] 개인 λ ˆμ§€μŠ€νŠΈλ¦¬ μ•‘μ„ΈμŠ€: x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ(#8849)

μ•ˆμ „ν•˜μ§€ μ•Šμ€ λ ˆμ§€μŠ€νŠΈλ¦¬λ₯Ό μ‚¬μš©ν•˜κ³  싢지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그것 μ—†μ΄λŠ” μ‹€ν–‰ν•  수 μ—†μŠ΅λ‹ˆκΉŒ? λ˜ν•œ μΈμ¦μ„œλŠ” repo의 것과 λ™μΌν•©λ‹ˆλ‹€. cz κ±°κΈ°μ—μ„œ λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€.

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 νšŒμ‹ ν•˜κ±°λ‚˜ GitHub https://github.com/moby/moby/issues/8849#issuecomment-316120117 μ—μ„œ ν™•μΈν•˜κ±°λ‚˜ μŠ€λ ˆλ“œ https://github.com/notifications/unsubscribe-auth/ANGcvLAxGE34n7fSByG0svUJry3vtZTAR7ks5

μ•Œλ¦Ό: 이 이메일(첨뢀 파일 포함)μ—λŠ” 개인 정보, κΈ°λ°€ 정보 λ˜λŠ” 법적 κΆŒν•œμ΄ μžˆλŠ” 정보 λ˜λŠ” μžλ£Œκ°€ 포함될 수 있으며 μˆ˜μ‹ μΈλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ³Έ 메일을 잘λͺ» μˆ˜μ‹ ν•˜μ…¨λ‹€λ©΄ λ³΅μ‚¬ν•˜μ§€ 말고 μ‹œμŠ€ν…œμ—μ„œ μ‚­μ œν•˜μ‹œκ³  μ¦‰μ‹œ νšŒμ‹  λ©”μΌλ‘œ λ°œμ‹ μΈμ—κ²Œ μ•Œλ €μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€. 이 λ©”μ‹œμ§€μ˜ 무단 μ‚¬μš© λ˜λŠ” κ³΅κ°œλŠ” μ—„κ²©νžˆ κΈˆμ§€λ©λ‹ˆλ‹€. STEFλŠ” 이 μ „μ†‘μ˜ 무결성을 보μž₯ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ©”μ‹œμ§€κ°€ λ³€κ²½λ˜κ±°λ‚˜ μœ„μ‘°λ˜κ±°λ‚˜ λ°”μ΄λŸ¬μŠ€, κ°€λ‘œμ±„κΈ° λ˜λŠ” μ‹œμŠ€ν…œ 손상에 λŒ€ν•΄ μ±…μž„μ„ 지지 μ•ŠμŠ΅λ‹ˆλ‹€.

AVIS : Ce message (y compris toutes piΓ¨ces jointes) peut contenir des informations privΓ©es, secretielles et est pour l'usage du(es) destinataire(s) destinataire(s). Si vous avez reΓ§u ce message par erreur, merci d'en avertir l'expΓ©diteur par retour d'email immΓ©diatement et de procΓ©der Γ  la destroy de l'ensemble des Γ©lΓ©ments reΓ§us, dont vous ne devez copie garder aucune μ„ μ „ ν™•μ‚°, ν™œμš© ou copy de ce message ou des renseignements qu'il contient par une personne autre que le(les) destinataire(s) dΓ©signΓ©(s) est interdite. STEF ne garantit pas l'intΓ©gritΓ© de cette transmission et ne saurait Γͺtre tenu responsable du message, de son contenu, de toute modifying ou falsification, d'une interception ou de dΓ©gΓ’ts Γ  votre systΓ¨me.

@abdasgupta , 17.03.1~ce-0~ubuntu-xenial 버전은 μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ 17.06.0~ce-0~ubuntu 버전은 μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€.

/usr/local/share/ca-certificates/my-org/my-domain.crt crtλ₯Ό 넣은 λ‹€μŒ sudo update-ca-certificates 및 sudo systemctl restart docker ν•©λ‹ˆλ‹€.

https://docs.docker.com/v17.03/engine/security/certificates/ 의 지침을 λ”°λ₯΄μ‹œκ² μŠ΅λ‹ˆκΉŒ? Docker 1.13 이상은 μ‹œμŠ€ν…œ κΈ°λ³Έκ°’μ—μ„œ μΈμ¦μ„œλ„ 읽어야 ν•©λ‹ˆλ‹€.

μ‚¬μš©μž 지정 μΈμ¦μ„œλŠ” λ ˆμ§€μŠ€νŠΈλ¦¬μ˜ 호슀트 이름과 λ™μΌν•œ 이름을 μ‚¬μš©ν•˜μ—¬ /etc/docker/certs.d μ•„λž˜μ— 디렉토리λ₯Ό μƒμ„±ν•˜μ—¬ κ΅¬μ„±λ©λ‹ˆλ‹€(예: localhost ). λͺ¨λ“  *.crt νŒŒμΌμ€ 이 디렉토리에 CA 루트둜 μΆ”κ°€λ©λ‹ˆλ‹€.

μΈμ¦μ„œλ₯Ό κ΅¬μ„±ν•œ ν›„ 데λͺ¬μ„ λ‹€μ‹œ μ‹œμž‘ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

/etc/docker/certs.d μ†”λ£¨μ…˜μœΌλ‘œ 어렀움을 κ²ͺκ³  μžˆλŠ” μ‚¬λžŒμ„ μœ„ν•΄ ν•΄λ‹Ή 디렉토리 이름에 λ ˆμ§€μŠ€νŠΈλ¦¬ ν¬νŠΈκ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. λ”°λΌμ„œ /etc/docker/certs.d/myregistry.net:8443 .

Photon OSμ—μ„œ 잘 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

/etc/docker/certs.d/myregistry/ ca.crt λŒ€μ‹  /etc/docker/certs.d/myregistry/ ca.pem 파일의 이름을 지정할 λ•ŒκΉŒμ§€ 이 였λ₯˜λ‘œ 고생

Windows 탐색기( ca.pem κ°€ ca.crt 둜 이름 변경됨) 및 Right-Click > Install Certificate μ—μ„œ λ‚΄ 인증 기관을 μ‚¬μš©ν•˜λ„λ‘ μ œμ•ˆ ν•˜λŠ” λ¬Έμ„œλ₯Ό λ³Ό λ•ŒκΉŒμ§€ Windowsμ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ ca.pem ν˜„μž¬ μ‚¬μš©μžμ˜ μ‹ λ’°ν•  수 μžˆλŠ” 루트 인증 κΈ°κ΄€. 도컀λ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆκ³  μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

coreosμ—μ„œλŠ” νŽΈμ§‘ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.
/etc/docker/daemon.json
{ "insecure-registries": ["registry:8443"] }
그럼 sudo systemctl restart docker

힌트: ν”„λ‘μ‹œλ₯Ό 톡해 개인 μ €μž₯μ†Œμ— λ„λ‹¬ν•˜λ©΄ λ™μΌν•œ 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜κ±°λ‚˜ ν”„λ‘μ‹œλ₯Ό λΉ„ν™œμ„±ν™”ν•˜κ±°λ‚˜ 개인 λ ˆμ§€μŠ€νŠΈλ¦¬ ν˜ΈμŠ€νŠΈμ— λŒ€ν•΄ μ˜ˆμ™Έ(NO_PROXY)λ₯Ό ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

Rancherμ—μ„œ Kubernetes POD둜 docker-registryλ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. L7 Ingressλ₯Ό κ΅¬μ„±ν–ˆμœΌλ©° SSL μΈμ¦μ„œκ°€ 거기에 μžˆμŠ΅λ‹ˆλ‹€. μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ•‘μ„ΈμŠ€ν•  λ•Œ SSL에 λ¬Έμ œκ°€ μ—†κ³  둜그인 자격 증λͺ…이 μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ docker 둜그인 λͺ…령을 μ‹€ν–‰ν•˜λ©΄ x509: μΈμ¦μ„œκ°€ μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ 것을 μ–»μŠ΅λ‹ˆλ‹€. 이 μΈμ¦μ„œλŠ” κ°€μ§œ SSL 자체 μ„œλͺ… μΈμ¦μ„œλ‘œ κΈ°λ³Έ μˆ˜μ‹  λ°±μ—”λ“œλ₯Ό μ–»μœΌλ €κ³  ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ„μ›€μ΄λ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μ»΄ν“¨ν„°μ—μ„œ 도컀λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

그것은 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€ .... 두 개의 호슀트 이름에 λŒ€ν•œ μƒˆ SSL μΈμ¦μ„œλ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ μˆ˜μ‹ μ—μ„œ μ•½κ°„ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.
λ‚΄ λ…ΈνŠΈλΆμ—μ„œ 도컀λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•œ 후에도 μ—¬μ „νžˆ λ™μΌν•œ 문제 :(

μ•ˆλ…• Bro.. 이 λ¬Έμ œλŠ” λ‚΄ λ¬Έμ œμ™€ λ™μΌν•©λ‹ˆλ‹€.
OpenshiftλŠ” nexus μ €μž₯μ†Œμ— λŒ€ν•œ 이미지λ₯Ό κ°€μ Έμ˜¬ 수 μ—†μŠ΅λ‹ˆλ‹€. ꡬ문은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
oc import-image nexus- coba:3.5 --from=192.168.250.250:8083/node-nexus --confirm
였λ₯˜: μ΅œμ‹  νƒœκ·Έ μ‹€νŒ¨: λ‚΄λΆ€ 였λ₯˜ λ°œμƒ: https://192.168.250.250 κ°€μ Έ 였기:8083/v2/: x509: μ•Œ 수 μ—†λŠ” κΈ°κ΄€μ—μ„œ μ„œλͺ…ν•œ μΈμ¦μ„œ
imagestream.image.openshift.io/nexus-coba κ°€μ Έμ˜€κΈ° 였λ₯˜
이 μ†”λ£¨μ…˜μ€ --confirm 뒀에 --insecure만 μΆ”κ°€ν•©λ‹ˆλ‹€.

oc import-image nexus- coba:3.5 --from=192.168.250.250:8083/node-nexus --confirm --insecure

κ°μ‚¬ν•©λ‹ˆλ‹€. μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Ubuntu/Debianμ—μ„œ ν•΄λ‹Ή 단계:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

κ·ΈλŸ¬λ‚˜ μ—¬κΈ°μ—λŠ” μ—¬μ „νžˆ 버그가 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—λŠ” /etc/docker/certs.d/<registry> 에 CA μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•˜λΌκ³  λ‚˜μ™€ 있으며, λΆ„λͺ…νžˆ μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μΈμ¦μ„œλ₯Ό μ „μ—­μ μœΌλ‘œ μ„€μΉ˜ν•œ ν›„ /etc/docker/certs.d μ—μ„œ μΈμ¦μ„œλ₯Ό μ œκ±°ν•˜κ³  Dockerλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆλŠ”λ° μ—¬μ „νžˆ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

정말 κ°μ‚¬ν•©λ‹ˆλ‹€! λ‚˜λŠ” 당신이 μ„€λͺ…ν•˜λŠ” 것을 μ •ν™•νžˆν•˜κ³  μžˆμ—ˆκ³  곡식 λ¬Έμ„œμ—μ„œ λ‚΄ 머리카락을 잘λͺ» λ½‘μ•˜μŠ΅λ‹ˆλ‹€ ... :)

λ‚˜λŠ” 그것을 믿지 μ•ŠλŠ”λ‹€! 5λ…„ 후에도 μ—¬μ „νžˆ μ‚¬μ‹€μž…λ‹ˆλ‹€. μ†”λ£¨μ…˜μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€. μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Ubuntu/Debianμ—μ„œ ν•΄λ‹Ή 단계:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

κ·ΈλŸ¬λ‚˜ μ—¬κΈ°μ—λŠ” μ—¬μ „νžˆ 버그가 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—λŠ” /etc/docker/certs.d/<registry> 에 CA μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•˜λΌκ³  λ‚˜μ™€ 있으며, λΆ„λͺ…νžˆ μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ μΈμ¦μ„œλ₯Ό μ „μ—­μ μœΌλ‘œ μ„€μΉ˜ν•œ ν›„ /etc/docker/certs.d μ—μ„œ μΈμ¦μ„œλ₯Ό μ œκ±°ν•˜κ³  Dockerλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆλŠ”λ° μ—¬μ „νžˆ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

nginxμ—μ„œλ„ λ ˆμ§€μŠ€νŠΈλ¦¬ 도컀 이미지에 μΈμ¦μ„œλ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•œλ‹€λŠ” μ˜λ―ΈμΈκ°€μš”?

Docker-Desktop μ•„μ΄μ½˜ -> ν™˜κ²½ μ„€μ • -> 데λͺ¬ -> "μ•ˆμ „ν•˜μ§€ μ•Šμ€ λ ˆμ§€μŠ€νŠΈλ¦¬"μ—μ„œ + μ•„μ΄μ½˜μ„ ν΄λ¦­ν•©λ‹ˆλ‹€.
"your-registry.com" 리포지토리 μΆ”κ°€
"적용 및 λ‹€μ‹œ μ‹œμž‘"을 ν΄λ¦­ν•˜μ‹­μ‹œμ˜€.

image

μžμ„Έν•œ λ‚΄μš©μ€ https://forums.docker.com/t/docker-private-registry-x509-certificate-signed-by-unknown-authority/21262/6 을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰