CFSSL是CloudFlare开源的一款PKI/TLS工具(PKI = Publick Key Infrastructure 公钥基础设施 )。 CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务。 使用Go语言编写。
项目地址: https://github.com/cloudflare/cfssl
下载地址: https://pkg.cfssl.org/
参考链接: https://blog.cloudflare.com/how-to-build-your-own-public-key-infrastructure/
⒈安装CFSSL
# 生成证书
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
# 利用Json生成证书
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
# 查看证书信息的工具
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
⒉修改权限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
⒊移动文件
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
⒋验证指令
cfssl --help
5. 生成一个配置模板
cfssl print-defaults config > config.json
//默认生成的模板文件如下:
{
"signing": { //签名
"default": {
"expiry": "168h" //默认过期时间
},
"profiles": {
"www": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"server auth"
]
},
"client": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"client auth"
]
}
}
}
}
6. 生成证书信息文件
cfssl print-defaults csr > csr.json
# 默认生成的模板文件如下:
{
"CN": "example.net", //标识具体的域
"hosts": [ //使用该证书的域名
"example.net",
"www.example.net"
],
"key": { //加密方式,一般RSA 2048
"algo": "ecdsa",
"size": 256
},
"names": [ //证书包含的信息,例如国家、地区等
{
"C": "US",
"L": "CA",
"ST": "San Francisco"
}
]
}
6. 示例: 生成配置模板及证书信息,如生成CA颁发机构的根证书
cat > ca-config.json < ca-csr.json <
7. 示例: CA机构给别人的证书,服务端的证书
# 别人的申请证书的信息
cat > server-csr.json << EOF
{
"CN":"kubernetes",
"hosts":[
"127.0.0.1",
"192.168.0.211",
"192.168.0.212",
"192.168.0.213",
"10.10.10.1",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluste.local"
],
"key":{
"algo":"rsa",
"size":
},
"names":[
{
"C":"CN",
"L":"Hebei",
"ST":"Zhangjiakou",
"O":"k8s",
"OU":"System"
}
]
}
EOF
# CA根据申请的信息生成证书
cfssl gencert -ca=ca.pem
-ca-key=ca-key.pem
-config=ca-config.json
-profile=kubernetes
server-csr.json | cfssljson -bare server
8. 示例: CA给别人的信息, 集群管理员
# 申请证书的信息
cat > admin-csr.json <
9. 示例:kube-proxy申请的证书
# 申请证书的信息
cat > kube-proxy-csr.json <