1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Harbor の Https 設定

Last updated at Posted at 2022-03-10

Harbor Server の https 設定

Harbor は http でも設定できますが、helm などのコンポーネントと連携するならば、https で建てた方が便利です。
ラボ環境なので、CA がなくて、Self Signed Cert を使います。
設定方法は Harbor docs を参照します。

まずは Harbor Server で CA 証明書を作成します。

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

そして、Server 用の key を作成し、Sign Request を作成します。

openssl genrsa -out yourdomain.com.key 4096
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr

Harbor Https Host の証明書は x509 v3 を準拠する必要があるので、x509 v3 extension file を作成します。
DNS.1/.2/.3 に Subject Alternative Name (SAN) を入れます。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

x509 v3 extension file と ca 証明書を持って、server の証明書をサインします。

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

作られた証明書とkey を証明書フォルダー(harbor.yml に記載するパス)に移動します。

cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/

Docker 用として、証明書を PEM フォーマットに変換し、/etc/docker/certs.d/yourdomain.com に入れます。
もし/etc/docker/certs.d/yourdomain.com が存在しないなら、手動で作成します。

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/

最後に、docker と harbor を再起動し、設定を反映させます。

systemctl restart docker

# harbor の再起動には harbor.yml および docker-compose.yml が必要なので、harbor/ フォルダに移動してから実施
./prepare
docker-compose down -v
docker-compose up -d

Harbor Client 側の設定

Harbor Server 側が設定完了しましたが、Self-signed Cert なので、Client 側にも CA 証明書をいれなければいけないです。
Client にアクセスし、/etc/docker/certs.d/yourdomain.com/ を作成し、ca.crt を server からコピーしてきます。

Harbor の Https Server にアクセスしてみる

設定後、Https をアクセスしてみます

curl -k https://yourdomain.com

docker login https://yourdomain.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /home/administrator/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?