下载软件
wget http://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.1_linux_amd64 -O $HOME/bin/cfssl
wget http://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.1_linux_amd64 -O $HOME/bin/cfssljson
wget http://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl-certinfo_1.6.1_linux_amd64 -O $HOME/bin/cfssl-certinfo
赋予权限
chmod +x $HOME/bin/{cfssl,cfssljson,cfssl-certinfo}
创建CA配置文件
expiry:证书有效期
signing:允许对其他证书进行签名
server auth: 客户端使用该证书可以对服务端提供的证书进行验证
client auth: 服务端使用该证书可以对客户端提供的证书进行验证
{
"signing": {
"default": {
"expiry": "87600h" //证书有效期
},
"profiles": {
"iam": {
"usages": [
"signing", //允许对其他证书进行签名
"key encipherment", //加密
"server auth", //客户端使用该证书可以对服务端提供的证书进行验证
"client auth" //服务端使用该证书可以对客户端提供的证书进行验证
],
"expiry": "876000h" //证书有效期
}
}
}
}
创建CA证书签名请求(CSR)配置
CN:提取该字段作为用户名
C: 国家
ST: 省份
L: 城市
O: 提取该字段作为用户的用户组
OU: 部门单位
{
"CN": "iam-ca", //提取该字段作为用户名
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN", //国家
"ST": "ShangHai", //省份
"L": "ShangHai", //城市
"O": "miss", //提取该字段作为用户的用户组
"OU": "iam" //部门单位
}
],
"ca": {
"expiry": "876000h"
}
}
生成CA证书和私钥
-initca 生成自签名证书
-bare 裸奔,不做密码保护
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
使用certinfo查看下证书信息和证书签名请求信息
cfssl certinfo -cert ca.pem
cfssl certinfo -csr ca.csr
给其它证书签名
hosts 证书域名
{
"CN": "iam-apiserver",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [ {
"C": "CN",
"ST": "ShangHai",
"L": "ShangHai",
"O": "miss",
"OU": "iam-apiserver"
} ],
"hosts": [
"127.0.0.1",
"localhost",
"iam.api.marmotedu.com"
]
}
生成证书和私钥
使用ca-config.json 中 profile iam 配置信息:-config=/etc/iam/cert/ca-config.json -profile=iam iam-apiserver-csr.json | cfssljson -bare iam-apiserver
cfssl gencert -ca=/etc/iam/cert/ca.pem -ca-key=/etc/iam/cert/ca-key.pem -config=/etc/iam/cert/ca-config.json -profile=iam iam-apiserver-csr.json | cfssljson -bare iam-apiserver