Harbor配置证书访问

一,生成证书

由于Harbor不附带任何证书,它默认使用HTTP来提供注册表请求。但是,强烈建议为任何生产环境启用安全性。Harbour有一个Nginx实例作为所有服务的反向代理,您可以使用准备脚本来配置Nginx来启用https。

1,获得证书

假设您的注册表的主机名是reg.yourdomain.com,并且其DNS记录指向您正在运行Harbor的主机。您首先应该从CA获得证书。证书通常包含.crt文件和.key文件,例如yourdomain.com.crt和yourdomain.com.key。

在测试或开发环境中,您可以选择使用自签名证书而不是CA中的证书。以下命令生成您自己的证书:

创建您自己的CA证书:

 openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

2,生成证书签名请求:

如果您使用FQDN-全限定域名(如reg.yourdomain.com)连接注册表主机,则必须使用reg.yourdomain.com作为CN(通用名称)。否则,如果您使用IP地址来连接您的注册表主机,CN可以是任何类似您的名字等等:

openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.cdcpsyb.com.key -out reg.cdcpsyb.com.csr

3,生成注册表主机的证书:

如果您使用的是像reg.yourdomain.com这样的FQDN 来连接您的注册表主机,请运行以下命令以生成注册表主机的证书:

  openssl x509 -req -days 365 -in reg.cdcpsyb.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.cdcpsyb.com.crt

如果你使用IP,比如192.168.1.101来连接你的注册表主机,你可以运行下面的命令:

# ip设置
echo subjectAltName = IP:192.168.1.101 > extfile.cnf
# 生成证书
openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out reg.cdcpsyb.com.crt

二、配置和安装

1,获取yourdomain.com.crt和yourdomain.com.key文件后,可以将它们放入如下目录中/root/cert/:

  cp yourdomain.com.crt /root/cert/
  cp yourdomain.com.key /root/cert/ 

2,接下来,编辑文件make / harbor.cfg,更新主机名和协议,并更新属性ssl_cert和ssl_cert_key:

  #set hostname
  hostname = reg.yourdomain.com
  #set ui_url_protocol
  ui_url_protocol = https
  ......
  #The path of cert and key files for nginx, they are applied only the protocol is set to https 
  ssl_cert = /root/cert/yourdomain.com.crt
  ssl_cert_key = /root/cert/yourdomain.com.key

3,为Harbour生成配置文件:

  ./prepare

如果Harbor已经运行,请停止并删除现有的实例。您的图像数据保留在文件系统中

 docker-compose down  

4,最后重启Harbour

  docker-compose up -d

为Harbour设置HTTPS后,您可以通过以下步骤验证它:

5,验证访问(使用foxmail浏览器访问,谷歌不信任)

打开浏览器并输入地址:https://reg.yourdomain.com。它应该显示Harbor的用户界面。

6,docker客户端访问

  • 删除/etc/docker/daemon.json中的“-insecure-registry”内容。

  • 创建/etc/docker/certs.d/reg.yourdomain.com(或您的注册表主机IP)文件夹,如果有端口则创建/etc/docker/certs.d/reg.yourdomain.com:port(或您的注册表主机IP:端口)

  • 拷贝ca.crt证书到创建文件夹

  • 验证登录

  docker login reg.yourdomain.com

如果您已将nginx 443端口映射到另一个端口,则需要添加要登录的端口,如下所示:

docker login reg.yourdomain.com:port

7故障排除

您可能会从证书颁发者处获得中间证书。在这种情况下,您应该将中间证书与您自己的证书合并以创建证书包。您可以通过以下命令来实现此目的:

cat intermediate-certificate.pem >> yourdomain.com.crt 
  • 在运行docker守护程序的某些系统上,您可能需要在操作系统级别信任该证书。
    在Ubuntu上,这可以通过以下命令完成:
cp youdomain.com.crt /usr/local/share/ca-certificates/reg.yourdomain.com.crt

更新CA证书
在Red Hat(CentOS等)上,命令是:

cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt

更新CA信任
原文链接

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值