其实一开始我是使用的自认证的CA证书,但是在后来的使用中发现了几个问题
1. push或pull都需要配置证书才能操作(如果有很多客户端使用的话是很麻烦的事)
2. 手动配置CA会比较复杂
3. 不适合正式环境使用
综合以上问题决定去申请个免费证书,现在有好多云厂商支持免费证书申请,我这里给大家罗列下,我用的是阿里云的免费证书
1. 阿里云
2. 腾讯云
3. 百度云
4. 华为云
其实提供免费证书的厂商还有很多,但我感觉这些就够啦
1. 一个域名并解析到harbor服务器
2. 一个阿里云账号(支付宝号就可以)
1. 登录到阿里云,搜索框搜索ssl,选择SSL证书
2.点击购买证书,选择个人免费版本,点击立即购买-付款
3. 购买以后来到控制台,开始申请证书
注意:
a. 如果域名是阿里云的可以选择自动DNS验证
b. 如果不是阿里云的域名且自己有配置域名的权限,可以选择手工DNS验证(按照提示配置dns的txt记录即可)
c. 如果既不是阿里的域名也没有配置的权限,那就只能选择文件验证(这个需要按照提示放一个文件到服务器的web根目录)
d. CSR生成方式选择系统生成即可
4. 选择文件验证,点击fileauth.txt下载文件,解压后里面有个fileauth.txt文件,不要打开
我在这里将重点介绍如何在harbor服务器配置文件验证(自己研究了好久)
如何配置文件验证?
1. 获取nginx容器id
docker ps -a |grep portal |awk '{print $1}'
#注意:harbor-portal这个容器才是提供nginx服务器的容器
2. 获取harbor-portal容器的挂载卷信息
docker inspect 容器id |grep -i mounts -A 30
#输出如下
#Source就是映射到服务器的目录,我们将通过这些写目录上传文件到容器里
"Mounts": [
{
"Type": "volume",
"Name": "fabb81ac450f70bc135e68b5a2527b8f94cc800662c74326ec5fdd19f26d947e",
"Source": "/data/docker/volumes/fabb81ac450f70bc135e68b5a2527b8f94cc800662c74326ec5fdd19f26d947e/_data",
"Destination": "/run",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "1207b57f20aed97cd1b9f3c27a741b324df4102b1aaa06e2457fcfb8a83cffe0",
"Source": "/data/docker/volumes/1207b57f20aed97cd1b9f3c27a741b324df4102b1aaa06e2457fcfb8a83cffe0/_data",
"Destination": "/var/cache/nginx",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "16c51319e96c92b695bfdd085b549505925d2b47ffb38811d9aa519ca995a557",
"Source": "/data/docker/volumes/16c51319e96c92b695bfdd085b549505925d2b47ffb38811d9aa519ca995a557/_data",
"Destination": "/var/log/nginx",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
3. 上传fileauth.txt文件到harbor-portal容器的/usr/share/nginx/html目录下
#把解压后的fileauth.txt文件上传到服务器的挂载目录下
例如使用/data/docker/volumes/16c51319e96c92b695bfdd085b549505925d2b47ffb38811d9aa519ca995a557/_data目录
#注意要使用root用户登录,要不然没操作权限
docker exec -it -u root 容器id bash
#创建所需目录
cd /usr/share/nginx/html/ && mkdir -p .well-known/pki-validation
cp /var/log/nginx/fileauth.txt /usr/share/nginx/html/.well-known/pki-validation/
4. 上传好以后点击验证,提交审核(审核时间大约10分钟左右)
下载到本地,然后上传到服务器,解压后会有xxxxxx.pem和xxxxxxx.key两个文件
把文件放到/data/cert/目录下(默认证书存放目录,没有此目录的话需要手动创建)
1. 修改harbor.yml文件
vim harbor.yml
#以下是我截取的配置片段
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
#hostname: reg.mydomain.com
hostname: harbor.xxxxxxx.com
customize_crt: false
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/harbor.xxxxxxxx.com.pem
private_key: /data/cert/harbor.xxxxxxxx.com.key
# Uncomment external_url if you want to enable external proxy
certificate: /data/cert/harbor.xxxxxxxx.com.pem
private_key: /data/cert/harbor.xxxxxxxx.com.key
注意:pem格式不需要转为crt格式,要不然nginx会起不来
2. 启动harbor
bash install.sh
等容器启动后ss -ntl查看443端口是否打开,如果打开的话到浏览器访问下
如图,即配置完成
3. 到此结束
如果有什么不清楚,欢迎留言