'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

기타/Docker

Harbor) 인증서 설정하기_docker,linux

MightyTedKim 2021. 9. 10. 00:20
728x90
반응형

기본적으로 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/

 

프라이빗 레지스트리 Harbor에 MinIO를 백엔드 스토리지로 설치하고 사용하는 방법 (private registry Har

프라이빗 레지스트리 Harbor에 MinIO를 백엔드 스토리지로 설치하고 사용하는 방법 (private registry Harbor, backend as MinIO - install guide on GCP)

mokpolar.github.io

 

 

+ 다른 도메인으로 테스트해봤다

 

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/

728x90
반응형