Harbor安全:cfssl工具为Harbor颁发https证书

网友投稿 283 2022-09-07

Harbor安全:cfssl工具为Harbor颁发https证书

环境及注意事项

本文以离线安装方式安装2.3.5版本的Harbor,操作系统为CentOS 7.6;安装目录则为/app/harbor/

注意事项:为便于后期Harbor的维护,建议将相关的证书放到Harbor的安装目录的ssl子目录下,在备份Harbor数据的时候一起进行备份。

创建证书存放目录 $ mkdir /app/harbor/ssl

一、cfssl简介

官网: 项目地址:配置文件; ca-csr.json:证书请求文件; xxx-ca.csr:应用证书签名请求文件; xxx-ca.pem:应用服务公钥; xxx-key.pem:应用服务私钥;


二、安装cfssl证书管理工具

下载cfssl二进制文件

在线安装,离线安装到官网下载安装包即可。下载二进制可执行文件并放入到/usr/local/bin/下

$ wget -c -O /usr/local/bin/cfssl $ wget -c -O /usr/local/bin/cfssljson $ wget -c -O /usr/local/bin/cfssl-certinfo

下载时默认没有可执行权限,所以得给这几个工具执行权限:

$ chmod +x /usr/local/bin/cfssl*

三、生成证书颁发机构证书(CA)

自建CA证书颁发机构,使用刚才安装好的cfssl工具为harbor制作颁发证书。

3.1 生成并修改CA默认配置文件

$ cfssl print-defaults config > /app/harbor/ssl/ca-config.json #生成默认配置文件 $ cat < /app/harbor/ssl/ca-config.json { "signing": { "default": { "expiry": "87600h" }, "profiles": { "harbor": { "expiry": "87600h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } } EOF

参数解析: \default.expiry:默认证书有效期(单位:h)\profiles.harbor:为服务使用该配置文件颁发证书的配置模块;\signing:签署,表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;\key encipherment:密钥加密;\profiles:指定了不同角色的配置信息;可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile。\server auth:服务器身份验证;表示 client 可以用该 CA 对 server 提供的证书进行验证;\client auth:客户端身份验证;表示 server 可以用该 CA 对 client 提供的证书进行验证;

3.2 生成并修改默认csr请求文件

$ cfssl print-defaults csr > /app/harbor/ssl/ca-csr.json $ cat < ca-csr.json { "CN": "harbor", "hosts": [ ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing" } ] } EOF

参数解析: \hosts:包含的授权范围,不在此范围的的节点或者服务使用此证书就会报证书不匹配错误,证书如果不包含可能会出现无法连接的情况(此处是CA机构的可为空);\Key: 指定使用的加密算法,一般使用rsa非对称加密算法(algo:rsa;size:2048)\CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;\CN:域名,也就是你现在使用什么域名就写什么域名;\O:Organization,从证书中提取该字段作为请求用户所属的组 (Group);


3.3 初始化CA证书

$ cfssl gencert -initca /app/harbor/ssl/ca-csr.json | cfssljson -bare /app/harbor/ssl/ca 2022/08/05 17:45:13 [INFO] generating a new CA key and certificate from CSR 2022/08/05 17:45:13 [INFO] generate received request 2022/08/05 17:45:13 [INFO] received CSR 2022/08/05 17:45:13 [INFO] generating key: rsa-2048 2022/08/05 17:45:13 [INFO] encoded CSR 2022/08/05 17:45:13 [INFO] signed certificate with serial number 569300079190788296339255431042064535929535986620 $ ls /app/harbor/ssl/ ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem

可以看到,当前目录下新生成了ca.csr、ca-key.pem、ca.pem这3个文件。ca-key.pem、ca.pem这两个是CA相关的证书,通过这个CA来向Harbor颁发证书。

四、CA给Harbor颁发证书

Harbor使用类似于申请表的一个请求文件向CA机构申请证书,CA机构则根据配置文件(证书策略)和请求文件(申请表)向Harbor颁发证书。

4.1 创建并修改Harbor证书请求文件

使用以下命令创建一个默认的请求文件,但默认的部分参数需要修改。

$ cfssl print-defaults csr > /app/harbor/ssl/harbor-csr.json $ cat < /app/harbor/ssl/harbor-csr.json { "CN": "192.168.2.22", #Harbor主机IP "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing" } ] } EOF

4.2 CA向Harbor颁发证书

CA使用请求文件根据配置向Harbor颁发证书。

$ cfssl gencert -ca=/app/harbor/ssl/ca.pem \ -ca-key=/app/harbor/ssl/ca-key.pem \ -config=/app/harbor/ssl/ca-config.json \ -profile=harbor harbor-csr.json | cfssljson -bare /app/harbor/ssl/harbor $ ls /app/harbor/ssl/ ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem harbor.csr harbor-csr.json harbor-key.pem harbor.pem $ cp harbor.pem harbor-key.pem /app/harbor/ssl/

参数解析: \-config:指定CA证书机构的配置文件;\-profile:指定使用CA配置文件中的哪个模块(此处harbor对应配置文件中的harbor);\harbor.pem:harbor服务的数字证书;\harbor-key.pem:harbor服务的私钥;

五、Harbor配置文件中指定证书

5.1 修改配置文件

修改Habor.yml配置文件,在对应参数指定使用的证书文件。

$ vim /app/harbor/harbor.yml hostname: 192.168.2.22 #本机IP或域名 http: port: 80 #启用https安全访问 port: 443 #Https安全端口(默认443) certificate: /app/harbor/ssl/harbor.pem #Harbor的证书 private_key: /app/harbor/ssl/harbor-key.pem #Harbor的证书私钥

注意事项:\如果是在Harbor安装完成后才在配置文件中修改这几行参数,在修改参数后,需要先停止harbor,再执行./prepare使配置生效,最后执行./install.sh。

5.2 浏览器登录Harbor UI

在浏览器地址栏输入:UI。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kubernetes 微服务 Pod 影响力
下一篇:创维×尤文图斯:双方强联手,打造跨界营销“新次元”!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~