警告
本文最后更新于 2022-07-01,文中内容可能已过时。
摘要
自签证书使用起来比较复杂,需要在拉取镜像的机器配置自签证书。推荐申请免费证书或购买证书。
1
| openssl genrsa -out ca.key 4096
|
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
|
生成私钥
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
|
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
|
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
|
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
|
最终在目录下得到如下文件:

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

两处需要修改
修改之后先关闭harbor
执行
更新一下配置文件
执行
重新安装并启动
将拷贝证书至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
目录一定要与服务保持一致,如果有端口,也应该用:
连接带上。
只需执行上述第二步即可