Harbor私有仓库添加SSL证书

摘要

自签证书

自签证书使用起来比较复杂,需要在拉取镜像的机器配置自签证书。推荐申请免费证书或购买证书。

生成证书

创建 CA 证书

  • 生成 CA 证书私钥
1
openssl genrsa -out ca.key 4096
  • 生成 CA 证书
1
2
3
4
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=bwcxtech.com" \
-key ca.key \
-out ca.crt

创建IP证书

生成私钥

1
openssl genrsa -out test.key 4096

生成证书签名请求 CSR

1
2
3
4
5
6
openssl req \
-sha512 \
-new \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=192.168.10.2" \
-key test.key \
-out test.csr

生成 x509 v3 扩展

1
2
3
4
5
6
7
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.10.2
EOF

创建 Harbor 访问证书

1
2
3
4
5
6
7
8
openssl x509 \
-req \
-sha512 \
-days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in test.csr \
-out test.crt

将 crt 转换为 cert ,以供 Docker 使用

1
openssl x509 -inform PEM -in test.crt -out test.cert

创建域名证书

  • 生成私钥
1
openssl genrsa -out harbor.bwcxtech.com.key 4096
  • 生成证书签名请求 CSR
1
2
3
4
5
6
openssl req \
-sha512 \
-new \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=*.harbor.bwcxtech.com" \
-key harbor.bwcxtech.com.key \
-out harbor.bwcxtech.com.csr
  • 生成 x509 v3 扩展
1
2
3
4
5
6
7
8
9
10
11
12
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.bwcxtech.com
DNS.2=*.harbor.bwcxtech.com
DNS.3=hostname
EOF
  • 创建 Harbor 访问证书
1
2
3
4
5
6
7
8
openssl x509 \
-req \
-sha512 \
-days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.bwcxtech.com.csr \
-out harbor.bwcxtech.com.crt

这里365是证书有效期 推荐3650。这个大家随意。

  • 将 crt 转换为 cert ,以供 Docker 使用
1
openssl x509 -inform PEM -in harbor.bwcxtech.com.crt -out harbor.bwcxtech.com.cert

最终在目录下得到如下文件:

image-20201228144931953

修改配置

按以上步骤生成证书后,修改harbor.cfg

两处需要修改
修改之后先关闭harbor

1
docker-compose stop

执行

1
./prepare

更新一下配置文件
执行

1
./install.sh

重新安装并启动

Docker 访问

将拷贝证书至Docker的证书配置目录

1
2
3
4
mkdir -p /etc/docker/certs.d/harbor.bwcxtech.com/
cp harbor.bwcxtech.com.cert /etc/docker/certs.d/harbor.bwcxtech.com/
cp harbor.bwcxtech.com.key /etc/docker/certs.d/harbor.bwcxtech.com/
cp ca.crt /etc/docker/certs.d/harbor.bwcxtech.com/

这里的harbor.bwcxtech.com目录一定要与服务保持一致,如果有端口,也应该用:连接带上。

购买证书或申请免费证书(推荐)

只需执行上述第二步即可