官方的安装说明:[https://goharbor.io/docs/1.10/install-config/]
现在Harbor的安装已经很简单,在docker环境下的安装,基本上已经全部自动化,只要运行脚本就行,这里面对很多人来说比较难的可能就是https的数字证书问题。关于https的原理以及用途我就不多说了,可以自已查度娘。
什么是数字证书?
在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点:
使用数字证书能够提高用户的可信度
数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密
在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上
X.509证书包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等
一、有商业付费域名数字证书
很多企业用户有自已的域名和dns,并且已经购买了商业的https证书,那就比较简单了,就不需要自已做签名证书,直接把证书下载下来,就可以用了。但是这里有一个重要的问题,购买的域名证书要了解清楚是单域名证书还是泛域名证书
1)单域名证书:证书仅仅包含一个主机。
2)SAN 证书:域名通配符证书类似 DNS 解析的泛域名概念,通配符证书就是证书中可以包含一个通配符(*.example.com)。主域名签发的通配符证书可以在所有子域名中使用,这样你的harbor仓库可以取个:
harbor.example.com
二、需要自已制作签名数字证书
很多时候我们安装harbor都是用来做一下测试或者企业内部自已用,就不想去购买商业的https证书,这时候我们就需要自已用openssl工具制作签名证书
1)首先创建存放数字证书的目录
mkdir -p /data/cert && cd /data/cert
这个目录到时候harbor.yml配置文件里的配置需要要从这个目录读取生成的证书文件
2)创建CA根证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=BeiJing/O=example/CN=harbor-registry"
3)生成一个证书签名, 设置访问域名为example.com
openssl req -newkey rsa:4096 -nodes -sha256 -keyout example.com.key -out server.csr -subj "/C=CN/L=BeiJing/O=example/CN=example.com"
4)生成主机的证书
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out example.com.crt
这时证书文件都生成好了
ca.crt ca.key ca.srl example.com.crt example.com.key server.csr
不过自签名的证书,在用浏览器打开时会提示不安全,点继续使用就行,不影响使用。
三、修改配置文件
到Harbor官方上下载一个离线的版本,下完后解压
harbor-offline-installer-v2.0.0-rc1.tgz(https://github.com/goharbor/harbor/tree/v2.0.0-rc1
)
1)解压后需要修改harbor.yml配置文件
hostname: harbor.example.com //这个一定要跟你dns解析的一致
certificate: /data/cert/example.com.crt
private_key: /data/cert/example.com.key
- 别的像数据库密码、Harbor仓库的默认密码等信息自已看着改。
四、运行install.sh直接安装就可以
安装好后,就用浏览器打开(https://harbor.example.com),可以打开就正常了
还有在命令行下测试一下登录是否成功
docker login harbor.example.com
提示输入用户名和密码,输入后提示Login Succeeded,就ok了
网友评论