自签ssl证书

1.生成CA证书私钥。

  1. $ openssl genrsa -out ca.key 4096

2.生成CA证书

  1. $ openssl req -x509 -new -nodes -sha512 -days 3650 \
  2. -subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=narwal/OU=Personal/CN=10.1.20.130" \
  3. -key ca.key \
  4. -out ca.crt

生成服务器证书

1.生成私钥

  1. $ openssl genrsa -out 10.1.20.130.key 4096

2.生成证书签名请求(CSR)

  1. $ openssl req -sha512 -new \
  2. -subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=narwal/OU=Personal/CN=10.1.20.130" \
  3. -key 10.1.20.130.key \
  4. -out 10.1.20.130.csr

3.生成一个x509 v3扩展文件

  1. 第一种方式:域名
  2. cat > v3.ext <<-EOF
  3. authorityKeyIdentifier=keyid,issuer
  4. basicConstraints=CA:FALSE
  5. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
  6. extendedKeyUsage = serverAuth
  7. subjectAltName = @alt_names
  8. [alt_names]
  9. DNS.1=192.168.121.190
  10. DNS.2=yourdomain
  11. DNS.3=hostname
  12. EOF
  13. ###############################################两种方式根据情况二选一##############################################
  14. 第二种方式:ip
  15. cat > v3.ext <<-EOF
  16. authorityKeyIdentifier=keyid,issuer
  17. basicConstraints=CA:FALSE
  18. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
  19. extendedKeyUsage = serverAuth
  20. subjectAltName = IP:10.1.20.130
  21. EOF

4.使用该v3.ext文件为您的Harbor主机生成证书

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

4、提供证书给Harbor和Docker

1.将服务器证书和密钥复制到Harbor主机上的certficates文件夹中

  1. mkdir -p /data/cert/ ##目录可根据自己需求自定义
  2. cp 10.1.20.130.crt /data/cert/
  3. cp 10.1.20.130.key /data/cert/

2.转换10.1.20.130.crt为10.1.20.130.cert,供Docker使用

  1. # Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书
  2. $ openssl x509 -inform PEM -in 10.1.20.130.crt -out 10.1.20.130.cert

3.将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中。您必须首先创建适当的文件夹

  1. $ mkdir -p /etc/docker/certs.d/10.1.20.130/
  2. $ cp 10.1.20.130.cert /etc/docker/certs.d/10.1.20.130/
  3. $ cp 10.1.20.130.key /etc/docker/certs.d/10.1.20.130/
  4. $ cp ca.crt /etc/docker/certs.d/10.1.20.130/

4.修改harbor.yml文件

  1. # 把harbor.yml文件中以下注释去掉,并配置好自己得证书目录
  2. https:
  3. port: 443
  4. certificate: /data/cert/10.1.20.130.crt
  5. private_key: /data/cert/10.1.20.130.key


5.运行prepare脚本以启用HTTPS

  1. $ ./prepare

6.运行install.sh脚本来启动harbor

  1. $ ./install.sh

7.如果Harbor正在运行,请停止并删除现有实例

  1. $ docker-compose down -v

8.重启

  1. $ docker-compose up -d

9.重新启动Docker Engine

  1. # docker
  2. systemctl restart docker
  3. # containerd
  4. systemctl restart containerd

10.将名为“ca.crt”证书下载到本地电脑,然后安装证书,之后就可以正常访问了

11.从Docker客户端登录Harbor

  1. $ docker login 10.1.20.130



如果已将nginx443端口映射到其他端口,请在login命令中添加该端口

  1. $ docker login 10.1.20.130:xxxx