介绍
前面说了怎么搭建harbor仓库,这里讲一讲harbor实现https访问,因为只需要内网访问,没必要去申请一个ssl证书,所以我就用openssl
颁发自签名证书,实现https访问。需要搭建一个dns服务器,让你的域名解析到你的harbo地址,具体教程,请看我上一篇的博客。
操作
在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点:
使用数字证书能够提高用户的可信度
数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密
在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上
X.509证书包含三个文件:key,csr,crt。
- key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
- csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
- crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
首先创建证书存放目录:
➜ mkdir -p /data/cert && cd /data/cert
创建 CA 根证书
➜ openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=zhejiang/O=lisea/CN=harbor-registry"
生成一个证书签名, 设置访问域名为 kevinharbor.com
➜ openssl req -newkey rsa:4096 -nodes -sha256 -keyout kevinharbor.com.key -out server.csr -subj "/C=CN/L=zhejiang/O=lisea/CN=kevinharbor.com"
生成主机的证书
➜ openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out kevinharbor.com.crt
然后进入harbor安装目录修改harbor.cfg
,修改下面几个选项
- hostname = kevinharbor.com
- ui_url_protocol = https
- ssl_cert = /data/cert/kevinharbor.com.crt
- ssl_cert_key = /data/cert/kevinharbor.com.key
重启服务
➜ sudo ./prepare
➜ docker-compose down -v
➜ docker-compose up -d
然后打开链接https://kevinharbor.com
浏览器可能会提示不安全的证书,这是因为我们是自己当CA机构,所以浏览器会不信任。添加信任就好