1、首先需要准备好ssl证书,没有安全的ssl证书的话,可以用openssl配置harbor自签名证书

生成CA证书私钥:

openssl genrsa -out ca.key 4096
2、生成CA证书(有两种配置,域名或者IP两种方式,下边分别说明)

域名方式:

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=test.com" \
 -key ca.key \
 -out ca.crt
 
 #  req  产生证书签发申请命令
 # -x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。
 # -new  生成证书请求
 # -key  指定私钥文件
 # -nodes 表示私钥不加密
 # -out   输出
 # -subj 指定用户信息
 # -days 有效期

IP方式:

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=172.30.29.20" \
 -key ca.key \
 -out ca.crt
 
 #  req  产生证书签发申请命令
 # -x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。
 # -new  生成证书请求
 # -key  指定私钥文件
 # -nodes 表示私钥不加密
 # -out   输出
 # -subj 指定用户信息
 # -days 有效期
3、生成harbor服务器证书:

域名方式:

openssl genrsa -out test.com.key 4096

IP方式:

openssl genrsa -out 172.30.29.20.key 4096
4、生成证书签名请求:

域名方式:

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

IP方式:

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=172.30.29.20" \
    -key 172.30.29.20.key \
    -out 172.30.29.20.csr
5、生成x509 v3扩展文件

域名方式:

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

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

IP方式:

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:172.30.29.20
EOF
6、使用v3.ext 文件为harbor主机生成证书:

域名方式:

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in test.com.csr \
    -out test.com.crt
    
# x509  签发X.509格式证书命令。
# -req   表示证书输入请求。
# -days  表示有效天数
# -extensions 表示按OpenSSL配置文件v3_req项添加扩展。
# -CA   表示CA证书,这里为ca.crt
# -CAkey  表示CA证书密钥,这里为ca.key
# -CAcreateserial 表示创建CA证书序列号
# -extfile  指定文件

IP方式:

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 172.30.29.20.csr \
    -out 172.30.29.20.crt
    
# x509  签发X.509格式证书命令。
# -req   表示证书输入请求。
# -days  表示有效天数
# -extensions 表示按OpenSSL配置文件v3_req项添加扩展。
# -CA   表示CA证书,这里为ca.crt
# -CAkey  表示CA证书密钥,这里为ca.key
# -CAcreateserial 表示创建CA证书序列号
# -extfile  指定文件
7、签发harbor证书:

域名方式:

mkdir  -p   /data/cert/
cp test.com.crt /data/cert/
cp test.com.key /data/cert/

IP方式:

mkdir  -p   /data/cert/
cp 172.30.29.20.crt /data/cert/
cp 172.30.29.20.key /data/cert/
8、签发docker证书:

域名方式:

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

IP方式:

openssl x509 -inform PEM -in 172.30.29.20.crt -out 172.30.29.20.cert
9、拷贝证书:

域名方式:

mkdir -p /etc/docker/certs.d/test.com
cp test.com.cert /etc/docker/certs.d/test.com/
cp test.com.key /etc/docker/certs.d/test.com/
cp ca.crt   /etc/docker/certs.d/test.com/

IP方式:

mkdir -p /etc/docker/certs.d/172.30.29.20
cp 172.30.29.20.cert /etc/docker/certs.d/172.30.29.20/
cp 172.30.29.20.key /etc/docker/certs.d/172.30.29.20/
cp ca.crt   /etc/docker/certs.d/172.30.29.20/
10、重启docker:

systemctl restart docker

---上述重启docker后,需要修改harbor配置:

harbor配置https_https

重启harbor:

cd  /root/harbor
./install.sh

上述搞好后,web直接https访问,登录,账号/密码: admin/Harbor12345

11、配置成https后,要拉去镜像的服务器需要做下边配置:

(因配置的harbor--CA私钥证书,不是安全的ssl证书,故拉取的时候,还是需要拉取的服务器做下述配置)

新增/etc/docker/daemon.json配置:

harbor配置https_https_02

修改 /usr/lib/systemd/system/docker.service 配置文件

harbor配置https_https_03

重启docker服务:

systemctl daemon-reload  ##重新加载daemon配置
systemctl restart docker   ##重启docker服务