기본적으로 harbor는 https로 설정이 되어 있다.
처음에 http로 연결하다가, 다른 부분들에서 걸려서 https로 바꿈
CA certificate
Harbor가 설치되어 있는 linux에 세팅함 (테스트)
ROOT-CA용 crt 생성
crt를 제공받아야하는데, 테스트니까
1. Private key(*.ca.key) 를 만든다.
2. ca.key로 *.ca.crt를 만든다.
# openssl을 이용해서 CA certicate 프라이빗 키 생성
openssl genrsa -out ca.key 4096
# CA certifice 생성
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=KO/ST=Kim/L=TedO=SK/OU=AI/CN=mydomain.com" \
-key mydomain.ca.key \
-out mydomain.ca.crt
최종적으로 필요한 파일
- mydomain.ca.crt
서버 인증용 crt, cert 생성
1. private key(domain.key) 만들기
2. domain.key -> *.csr 생성
3. v3.ext 만들기
4. v3.ext + *.csr -> *.crt생성
5. 도커용으로 *crt -> *.cert 생성
최종적으로 필요한 파일
- mydomain.crt
- mydomain.cert
# 서버 certicate를 위한 프라이빗 키 생성
openssl genrsa -out registry2.airuntime.com.key 4096
# CSR 생성
openssl req -sha512 -new \
-subj "/C=KO/ST=Kyungki/L=Seongnam/O=SK/OU=AI/CN=mydomain.com" \
-key mydomain.com.key \
-out mydomain.com.csr
# x509 v3 extention 파일 생성
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=mydomain.com
DNS.2=mydomain
DNS.3=vminstance's host
EOF
# v3.ext 파일을 certificate를 생성하는데 사용
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in mydomain.com.csr \
-out mydomain.com.crt
# 도커가 쓸 수 있도록 cert로 변환
openssl x509 -inform PEM -in mydomain.com.crt -out mydomain.com.cert
적용
다른 OS 가 있다고 가정하자. docker login [HARBOR_DOMAIN]을 입력했을 때 cert 관련 오류가 나는 상황이다.
HARBOR_DOMAIN -> mydomain.com
1. 인증서 복사 - 도커
/etc/docker/certs.d/mydomain.com/
- mydomain.ca.crt (ROOT CA 인증서)
- mydomain.crt (서버 인증서)
- mydomain.cert (서버 인증서-도커용)
3. 인증서 복사 - 리눅스
/usr/local/share/ca-certificates/
- mydomain.com.crt
# Server certificate, key 와 CA 파일들을 Docker 인증 폴더로 복사하기 위해 폴더 생성
sudo mkdir /etc/docker/certs.d/mydomain.com
# 그리고 복사
sudo cp mydomain.com.cert /etc/docker/certs.d/mydomain.com/
sudo cp mydomain.com.key /etc/docker/certs.d/mydomain.com/
sudo cp ca.crt /etc/docker/certs.d/mydomain.com/
# 도커는 새 인증을 받으면 재시작을 해줘야 한다. (Mac에서도 마찬가지다.. 깜빡하기 쉽다)
sudo systemctl restart docker
# 우분투에도 crt 반영해주기
cp mydomain.com.crt /usr/local/share/ca-certificates/mydomain.com.crt
sudo update-ca-certificates
https://mokpolar.github.io/harbor_minio_standalone/
+ 다른 도메인으로 테스트해봤다
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=KO/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=harbor.hgkim" \
-key ca.key \
-out ca.crt
---
openssl genrsa -out harbor.hgkim.key 4096
openssl req -sha512 -new \
-subj "/C=KO/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=harbor.hgkim" \
-key harbor.hgkim.key \
-out harbor.hgkim.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.hgkim
DNS.2=yourdomain
DNS.3=hostname
EOF
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.hgkim.csr \
-out harbor.hgkim.crt
cp /home/hgkim/deploy/harbor/harbor.hgkim.crt /data/cert/
cp /home/hgkim/deploy/harbor/harbor.hgkim.key /data/cert/
openssl x509 -inform PEM -in harbor.hgkim.crt -out harbor.hgkim.cert
cp /home/hgkim/deploy/harbor/harbor.hgkim.cert /etc/docker/certs.d/harbor.hgkim/
cp /home/hgkim/deploy/harbor/harbor.hgkim.key /etc/docker/certs.d/harbor.hgkim/
cp /home/hgkim/deploy/harbor/ca.crt /etc/docker/certs.d/harbor.hgkim/
'기타 > Docker' 카테고리의 다른 글
Docker) run할 때 git pull하기 (0) | 2021.11.12 |
---|---|
Docker) docker-compose 설치 (0) | 2021.10.06 |
Docker) Proxy 설정 (0) | 2021.09.21 |
Harbor) minio 연결하기 실수 (0) | 2021.09.09 |
Docker) [해결] dial tcp: lookup docker on *.*.*.*:53: no such host_gitlab-runner (0) | 2021.09.08 |