• 1.下载harbor
wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
  • 2.解压harbor目录
[root@elk93 ~]# tar xf harbor-offline-installer-v2.12.2.tgz  -C /usr/local/
  • 3.准备配置文件
[root@elk93 ~]# ll /usr/local/harbor/
total 636508
drwxr-xr-x  2 root root      4096 Mar 24 16:46 ./
drwxr-xr-x 19 root root      4096 Mar 24 16:46 ../
-rw-r--r--  1 root root      3646 Jan 16 22:10 common.sh
-rw-r--r--  1 root root 651727378 Jan 16 22:11 harbor.v2.12.2.tar.gz
-rw-r--r--  1 root root     14288 Jan 16 22:10 harbor.yml.tmpl
-rwxr-xr-x  1 root root      1975 Jan 16 22:10 install.sh*
-rw-r--r--  1 root root     11347 Jan 16 22:10 LICENSE
-rwxr-xr-x  1 root root      2211 Jan 16 22:10 prepare*
[root@elk93 ~]# 
[root@elk93 ~]# cp /usr/local/harbor/harbor.yml{.tmpl,}
[root@elk93 ~]# 
[root@elk93 ~]# ll /usr/local/harbor/harbor.yml*
-rw-r--r-- 1 root root 14288 Mar 24 16:46 /usr/local/harbor/harbor.yml
-rw-r--r-- 1 root root 14288 Jan 16 22:10 /usr/local/harbor/harbor.yml.tmpl
[root@elk93 ~]# 
[root@elk93 ~]# vim /usr/local/harbor/harbor.yml
...
hostname: 10.0.0.93
...
## https related config                               
#https:
#  # https port for harbor, default is 443
#  port: 443
#  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path
#  # enable strong ssl ciphers (default: false)
#  # strong_ssl_ciphers: false

...
harbor_admin_password: 1   
...
data_volume: /oldboyedu/data/harbor       
...
  • 4.开始安装harbor
注意:确保服务器环境是安装过docker的并且docker服务已启用
[root@elk93 ~]# /usr/local/harbor/install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.24

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 2.23.0

[Step 2]: loading Harbor images ...
...

[Step 5]: starting Harbor ...
[+] Building 0.0s (0/0)                                                                                                 docker:default
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                           0.1s 
 ✔ Container harbor-log         Started                                                                                           0.0s 
 ✔ Container redis              Started                                                                                           0.0s 
 ✔ Container registryctl        Started                                                                                           0.0s 
 ✔ Container harbor-db          Started                                                                                           0.1s 
 ✔ Container harbor-portal      Started                                                                                           0.0s 
 ✔ Container registry           Started                                                                                           0.0s 
 ✔ Container harbor-core        Started                                                                                           0.0s 
 ✔ Container harbor-jobservice  Started                                                                                           0.0s 
 ✔ Container nginx              Started                                                                                           0.0s 
✔ ----Harbor has been installed and started successfully.----
[root@elk93 ~]# 
  • 5.访问harbor的WebUI
http://10.0.0.93/harbor/projects


用户名: admin 
密  码: 1

http harbor仓库搭建完毕!

harbor基于自建证书https

  • 1.环境准备
www.vionletarchitect.com   10.0.0.250
  • 2.准备harbor安装包
[root@elk93 ~]# scp harbor-offline-installer-v2.12.2.tgz oldboyedu-autoinstall-docker-docker-compose.tar.gz 10.0.0.250:~
  • 3.解压harbor安装包
[root@harbor ~]# tar xf harbor-offline-installer-v2.12.2.tgz
  • 4.配置CA证书
4.1 进入到harbor程序的根目录
[root@harbor ~]# cd /usr/local/harbor/
4.2 创建证书存放目录
[root@harbor ~]# apt -y install tree
[root@harbor ~]# mkdir -pv certs/{ca,harbor-server,docker-client}
mkdir: created directory 'certs'
mkdir: created directory 'certs/ca'
mkdir: created directory 'certs/harbor-server'
mkdir: created directory 'certs/docker-client'
[root@harbor ~]# tree certs
certs
├── ca
├── docker-client
└── harbor-server
3 directories, 0 files
4.3 创建CA的私
[root@harbor ~]# cd certs/
[root@harbor ~]# openssl genrsa -out ca/ca.key 4096
[root@harbor ~]# tree 
.
├── ca
│   └── ca.key
├── docker-client
└── harbor-server

4.4 基于自建的CA私钥创建CA证书(注意,证书签发的域名范围)
[root@harbor ~]# openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=amazon.com" \
 -key ca/ca.key \
 -out ca/ca.crt
[root@harbor ~]# tree 
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server

3 directories, 2 files
4.5 查看自建证书信息
[root@harbor ~]# openssl  x509 -in ca/ca.crt -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            3d:fb:57:45:7c:cc:15:d5:ce:04:a2:1d:80:0a:18:49:88:8d:cd:9a
        Signature Algorithm: sha512WithRSAEncryption
        Issuer: C = CN, ST = Beijing, L = Beijing, O = example, OU = Personal, CN = oldboyedu.com
        Validity
            Not Before: Mar 25 02:33:25 2025 GMT
            Not After : Mar 23 02:33:25 2035 GMT
        Subject: C = CN, ST = Beijing, L = Beijing, O = example, OU = Personal, CN = oldboyedu.com
...
  • 5.配置harbor服务端证书
[root@harbor ~]# openssl genrsa -out harbor-server/harbor250.oldboyedu.com.key 4096
[root@harbor ~]#
[root@harbor ~]# tree 
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server
    └── www.vionletarchitect.top.key

5.2 harbor服务器基于私钥签发证书认证请求(csr文件),让自建CA认证
[root@harbor ~]# openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor250.oldboyedu.com" \
    -key harbor-server/www.vionletarchitect.top.key \
    -out harbor-server/www.vionletarchitect.top.csr
[root@harbor ~]# tree
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server
    ├── www.vionletarchitect.top.csr
    └── www.vionletarchitect.top.key
3 directories, 4 files

5.3 生成 x509 v3 的扩展文件用于认证
[root@harbor ~]#  cat > harbor-server/v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=www.vionletarchitect.top
EOF
[root@harbor ~]# tree
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server
    ├── www.vionletarchitect.top.csr
    ├── www.vionletarchitect.top.key
    └── v3.ext

3 directories, 5 files

5.4 基于 x509 v3 的扩展文件认证签发harbor server证书
[root@harbor ~]# openssl x509 -req -sha512 -days 3650 \
    -extfile harbor-server/v3.ext \
    -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial \
    -in harbor-server/www.vionletarchitect.top.csr \
    -out harbor-server/www.vionletarchitect.top.crt
[root@harbor ~]# tree
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server
    ├── www.vionletarchitect.top.crt
    ├── www.vionletarchitect.top.csr
    ├── www.vionletarchitect.top.key
    └── v3.ext

3 directories, 6 files

5.5 修改harbor的配置文件使用自建证书

[root@harbor ~]# cp ../harbor.yml{.tmpl,}
[root@harbor ~]#
[root@harbor ~]# vim ../harbor.yml
...
hostname: www.vionletarchitect.top
https:
  ...
  certificate: /usr/local/harbor/certs/harbor-server/www.vionletarchitect.top.crt
  private_key: /usr/local/harbor/certs/harbor-server/www.vionletarchitect.top.key
...
harbor_admin_password: 1
...
data_volume: /var/lib/harbor
... 
  • 5.6 安装harbor服务
[root@harbor ~]# /usr/local/harbor/install.sh 
[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.24

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 2.23.0

[Step 2]: loading Harbor images ...
...

[Step 5]: starting Harbor ...
[+] Building 0.0s (0/0)                                                                                                 docker:default
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                           0.0s 
 ✔ Container harbor-log         Started                                                                                           0.0s 
 ✔ Container harbor-db          Started                                                                                           0.0s 
 ✔ Container registryctl        Started                                                                                           0.1s 
 ✔ Container harbor-portal      Started                                                                                           0.1s 
 ✔ Container redis              Started                                                                                           0.1s 
 ✔ Container registry           Started                                                                                           0.1s 
 ✔ Container harbor-core        Started                                                                                           0.0s 
 ✔ Container nginx              Started                                                                                           0.0s 
 ✔ Container harbor-jobservice  Started                                                                                           0.0s 
✔ ----Harbor has been installed and started successfully.----
  • 6.访问harbor的WebUI
6.1 在windows添加hosts文件解析如下:
10.0.0.250 www.vionletarchitect.top

6.2 访问测试:
https://www.vionletarchitect.top/harbor/projects/1/repositories

配置docker客户端证书实战案例

  • 1.生成docker客户端证书
[root@harbor certs]# cp ca/ca.crt harbor-server/www.vionletarchitect.top.key docker-client/
[root@harbor certs]# cp harbor-server/www.vionletarchitect.top.crt docker-client/www.vionletarchitect.top.cert
[root@harbor certs]# 
[root@harbor certs]# tree 
.
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
│   ├── ca.crt
│   ├── www.vionletarchitect.top.cert
│   └── www.vionletarchitect.top.key
└── harbor-server
    ├── www.vionletarchitect.top.crt
    ├── www.vionletarchitect.top.csr
    ├── www.vionletarchitect.top.key
    └── v3.ext

3 directories, 9 files
  • 2.docker客户端创建自建证书的目录结构(注意域名的名称和目录要一致哟~)
[root@elk91 ~]# mkdir -pv /etc/docker/certs.d/www.vionletarchitect.top/
mkdir: created directory '/etc/docker/certs.d'
mkdir: created directory '/etc/docker/certs.d/www.vionletarchitect.top/'
[root@elk91 ~]#
  • 3.拷贝docker client证书文件到客户端
[root@elk91 ~]# ll /etc/docker/certs.d/www.vionletarchitect.top/
total 8
drwxr-xr-x 2 root root 4096 Mar 25 11:00 ./
drwxr-xr-x 3 root root 4096 Mar 25 11:00 ../
[root@elk91 ~]# 
[root@elk91 ~]# scp www.vionletarchitect.top:/usr/local/harbor/certs/docker-client/* /etc/docker/certs.d/www.vionletarchitect.top/
...
root@www.vionletarchitect.top's password: 
ca.crt                                                                                                         100% 2049     4.3MB/s   00:00    
www.vionletarchitect.top.cert                                                                                   100% 2155     1.6MB/s   00:00    
www.vionletarchitect.top.key                                                                                    100% 3268     7.6MB/s   00:00    
[root@elk91 ~]# 
[root@elk91 ~]# ll /etc/docker/certs.d/www.vionletarchitect.top/
total 20
drwxr-xr-x 2 root root 4096 Mar 25 11:01 ./
drwxr-xr-x 3 root root 4096 Mar 25 11:00 ../
-rw-r--r-- 1 root root 2049 Mar 25 11:01 ca.crt
-rw-r--r-- 1 root root 2155 Mar 25 11:01 www.vionletarchitect.top.cert
-rw------- 1 root root 3268 Mar 25 11:01 www.vionletarchitect.top.key
[root@elk91 ~]# 
  • 4.客户端登录测试
root@elk91 ~]# docker login -u admin -p 1 www.vionletarchitect.top
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@elk91 ~]# 
[root@elk91 ~]# cat /root/.docker/config.json
{
	"auths": {
		"10.0.0.91": {
			"auth": "bGludXg5NjpMaW51eDk2QDIwMjU="
		},
		"www.vionletarchitect.top": {
			"auth": "YWRtaW46MQ=="
		}
	}
}[root@elk91 ~]# 
[root@elk91 ~]# 
[root@elk91 ~]# echo YWRtaW46MQ== | base64 -d;echo
admin:1
[root@elk91 ~]# 

权威机构办法的证书https配置实战

  • 1.下载证书

去阿里云下载你的证书压缩包

  • 2.解压证书
[root@elk93 ~]# unzip www.vionletarchitect.top_nginx.zip -d /usr/local/harbor/
  • 3.修改harbor的配置文件
[root@elk93 ~]# cd /usr/local/harbor/
[root@elk93 harbor]# 
[root@elk93 harbor]# vim harbor.yml
...
hostname: www.vionletarchitect.top
...
https:
   ...
   certificate: /usr/local/harbor/www.vionletarchitect.top_nginx/www.vionletarchitect.top.crt
   private_key: /usr/local/harbor/www.vionletarchitect.top_nginx/www.vionletarchitect.top.key          
  • 4.重新安装
[root@elk93 harbor]# ./prepare 

...
[root@elk93 harbor]# 
[root@elk93 harbor]# ./install.sh 
...
[Step 5]: starting Harbor ...
[+] Building 0.0s (0/0)                                                                                                 docker:default
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                           0.1s 
 ✔ Container harbor-log         Started                                                                                           0.0s 
 ✔ Container harbor-portal      Started                                                                                           0.0s 
 ✔ Container registryctl        Started                                                                                           0.0s 
 ✔ Container redis              Started                                                                                           0.0s 
 ✔ Container harbor-db          Started                                                                                           0.0s 
 ✔ Container registry           Started                                                                                           0.0s 
 ✔ Container harbor-core        Started                                                                                           0.0s 
 ✔ Container nginx              Started                                                                                           0.0s 
 ✔ Container harbor-jobservice  Started                                                                                           0.0s 
✔ ----Harbor has been installed and started successfully.----
[root@elk93 harbor]# 
  • 5.windows访问测试
5.1 windows添加解析 
10.0.0.93 www.vionletarchitect.top


5.2 访问测试 
https://harbor.yinzhengjie.com/harbor/projects