harbor配置https

​ 在前面harbor搭建docker私有镜像仓库中使用了默认的http端口,但生产环境中并不提倡使用不安全的http服务,建议使用https保证安全性,这里根据官方推荐的openssl方法来自签证书,但浏览器并不认可自签证书的安全性,所以浏览器需要添加颁发的证书到浏览器中。同时,也可使用官方推荐的ACME获取免费的SSL证书。

一、自签证书

1、生成CA证书

1
2
3
4
5
6
7
8
mkdir /Users/bulubulu/docker/cert			# 创建一个放置证书相关的目录,并使用cd进入该目录
## 1. 生成CA证书私钥
openssl genrsa -out ca.key 4096
## 2. 生成CA证书,可调整 -subj 选项来表明域名名称等信息
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" \
-key ca.key \
-out ca.crt

2、生成服务器证书

​ 认证证书通常包含证书请求.csr文件、签名证书.crt文件及私钥.key文件,我这里harbor配置的hostname是harbor.test.com,所以最终需要生成harbor.test.com.crt、harbor.test.com.csr、harbor.test.com.key三个文件。

  • key:证书私钥,一般利用rsa等算法生成
  • csr:证书请求文件,利用证书私钥生成证书请求文件,该文件包含了服务器和地址等信息,申请人将该文件提交给CA机构,CA机构会根据该文件所携带的私钥信息来进行签名生成证书
  • crt:证书文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## 1. 生成私钥
openssl genrsa -out harbor.test.com.key 4096
## 2. 生成csr文件
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" \
-key harbor.test.com.key \
-out harbor.test.com.csr
## 3. 生成ssl匹配多域名文,例如既想使用域名又需要通过127.0.0.1本地地址登陆测试,可使用subjectAltName参数来进行配置
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.test.com
DNS.2=127.0.0.1
EOF
## 4. 根据v3.ext及csr文件请求生成crt证书文件
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.test.com.csr \
-out harbor.test.com.crt

3、harbor配置修改

1
2
3
4
5
6
7
8
9
vim harbor.yml
hostname: harbor.test.com
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /Users/bulubulu/docker/cert/harbor.test.com.crt
private_key: /Users/bulubulu/docker/cert/harbor.test.com.key

4、harbor重新导入配置并启动

1
2
3
4
## 在harbor安装目录下执行以下命令重新启动
docker-compose down -v
./prepare
docker-compose up -d

5、浏览器访问测试

​ 在浏览器通过所设置域名及ip分别进行测试

访问harbor.test.com

访问127.0.0.1