Harbor安全:cfssl工具为Harbor颁发https证书
Posted 键客李大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Harbor安全:cfssl工具为Harbor颁发https证书相关的知识,希望对你有一定的参考价值。
环境及注意事项
本文以离线安装方式安装2.3.5版本的Harbor,操作系统为CentOS 7.6;
安装目录则为/app/harbor/
注意事项:
为便于后期Harbor的维护,建议将相关的证书放到Harbor的安装目录的ssl子目录下,在备份Harbor数据的时候一起进行备份。
- 创建证书存放目录
$ mkdir /app/harbor/ssl
一、cfssl简介
CFSSL是CloudFlare公司提供的PKI/TLS工具,使用Go语言开发。开源并支持Windows、Linux、macos系统。
工具集:
multirootca
:管理多个签名密钥的情形;使用多个签名密钥的证书颁发机构服务器。\\mkbundle
:构建证书池;\\cfssljson
:将从cfssl和multirootca等获得的json格式的输出转化为证书格式的文件(证书,密钥,CSR和bundle)进行存储;\\cfssl-certinfo
:可显示CSR或证书文件的详细信息,可用于证书校验。cfssljson
:将从cfssl和multirootca等获得的json格式的输出转化为证书格式的文件(证书,密钥,CSR和bundle)进行存储;\\cfssl-certinfo
:可显示CSR或证书文件的详细信息;可用于证书校验。
文件说明
- ca-config.json: 配置文件;
- ca-csr.json:证书请求文件;
- xxx-ca.csr:应用证书签名请求文件;
- xxx-ca.pem:应用服务公钥;
- xxx-key.pem:应用服务私钥;
<br/>
二、安装cfssl证书管理工具
下载cfssl二进制文件
在线安装,离线安装到官网下载安装包即可。
下载二进制可执行文件并放入到/usr/local/bin/下
$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64 -O /usr/local/bin/cfssl
$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssljson_1.6.0_linux_amd64 -O /usr/local/bin/cfssljson
$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl-certinfo_1.6.0_linux_amd64 -O /usr/local/bin/cfssl-certinfo
下载时默认没有可执行权限,所以得给这几个工具执行权限:
$ chmod +x /usr/local/bin/cfssl*
三、生成证书颁发机构证书(CA)
3.1 生成并修改CA默认配置文件
$ cfssl print-defaults config > /app/harbor/ssl/ca-config.json #生成默认配置文件
$ cat <<EOF > /app/harbor/ssl/ca-config.json
"signing":
"default":
"expiry": "87600h"
,
"profiles":
"harbor":
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
EOF
3.2 生成并修改默认csr请求文件
$ cfssl print-defaults csr > /app/harbor/ssl/ca-csr.json
$ cat <<EOF > ca-csr.json
"CN": "harbor",
"hosts": [
],
"key":
"algo": "rsa",
"size": 2048
,
"names": [
"C": "CN",
"ST": "Beijing",
"L": "Beijing"
]
EOF
<br/>
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 <<EOF > /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/
五、Harbor配置文件中指定证书
5.1 修改配置文件
修改Habor.yml配置文件,在对应参数指定使用的证书文件。
$ vim /app/harbor/harbor.yml
hostname: 192.168.2.22 #本机IP或域名
http:
port: 80
https: #启用https安全访问
port: 443 #Https安全端口(默认443)
certificate: /app/harbor/ssl/harbor.pem #Harbor的证书
private_key: /app/harbor/ssl/harbor-key.pem #Harbor的证书私钥
关于Harbor配置文件每个参数的详细含义,可查看官方文档,或可在【Harbor进阶实战】
微信公众号找到,本处仅修改必须的参数。
5.2 浏览器登录Harbor UI
在浏览器地址栏输入:https://harbor-ip:443
,
即可访问Harbior UI。
以上是关于Harbor安全:cfssl工具为Harbor颁发https证书的主要内容,如果未能解决你的问题,请参考以下文章
小佑科技推出免费镜像漏洞扫描工具支持与harbor镜像仓库无缝集成