自签ssl证书
1.生成CA证书私钥。
$ openssl genrsa -out ca.key 4096
2.生成CA证书
$ openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=narwal/OU=Personal/CN=10.1.20.130" \-key ca.key \-out ca.crt
生成服务器证书
1.生成私钥
$ openssl genrsa -out 10.1.20.130.key 4096
2.生成证书签名请求(CSR)
$ openssl req -sha512 -new \-subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=narwal/OU=Personal/CN=10.1.20.130" \-key 10.1.20.130.key \-out 10.1.20.130.csr
3.生成一个x509 v3扩展文件
第一种方式:域名cat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuthsubjectAltName = @alt_names [alt_names]DNS.1=192.168.121.190DNS.2=yourdomainDNS.3=hostnameEOF###############################################两种方式根据情况二选一##############################################第二种方式:ipcat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuthsubjectAltName = IP:10.1.20.130EOF
4.使用该v3.ext文件为您的Harbor主机生成证书
$ openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in 10.1.20.130.csr \-out 10.1.20.130.crt
4、提供证书给Harbor和Docker
1.将服务器证书和密钥复制到Harbor主机上的certficates文件夹中
mkdir -p /data/cert/ ##目录可根据自己需求自定义cp 10.1.20.130.crt /data/cert/cp 10.1.20.130.key /data/cert/
2.转换10.1.20.130.crt为10.1.20.130.cert,供Docker使用
# Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书$ openssl x509 -inform PEM -in 10.1.20.130.crt -out 10.1.20.130.cert
3.将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中。您必须首先创建适当的文件夹
$ mkdir -p /etc/docker/certs.d/10.1.20.130/$ cp 10.1.20.130.cert /etc/docker/certs.d/10.1.20.130/$ cp 10.1.20.130.key /etc/docker/certs.d/10.1.20.130/$ cp ca.crt /etc/docker/certs.d/10.1.20.130/
4.修改harbor.yml文件
# 把harbor.yml文件中以下注释去掉,并配置好自己得证书目录https:port: 443certificate: /data/cert/10.1.20.130.crtprivate_key: /data/cert/10.1.20.130.key
5.运行prepare脚本以启用HTTPS
$ ./prepare
6.运行install.sh脚本来启动harbor
$ ./install.sh
7.如果Harbor正在运行,请停止并删除现有实例
$ docker-compose down -v
8.重启
$ docker-compose up -d
9.重新启动Docker Engine
# dockersystemctl restart docker# containerdsystemctl restart containerd
10.将名为“ca.crt”证书下载到本地电脑,然后安装证书,之后就可以正常访问了
11.从Docker客户端登录Harbor
$ docker login 10.1.20.130
如果已将nginx443端口映射到其他端口,请在login命令中添加该端口
$ docker login 10.1.20.130:xxxx