harbor使用免费证书配置https

其实一开始我是使用的自认证的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分钟左右)

二、配置https访问

1. 下载证书

2. 配置harbor

下载到本地,然后上传到服务器,解压后会有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. 到此结束

如果有什么不清楚,欢迎留言

 
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值