Linux使用CFSSL自签TLS证书
⒈安装CFSSL
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
①生成证书
②利用Json生成证书
③查看证书信息的工具
⒉修改权限
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
①print-defaults 输出生成证书的模板
*生成一个配置模板
cfssl print-defaults config > config.json
默认生成的模板文件如下:
1 { 2 "signing": { //签名 3 "default": { 4 "expiry": "168h" //默认过期时间 5 }, 6 "profiles": { 7 "www": { 8 "expiry": "8760h", 9 "usages": [ 10 "signing", 11 "key encipherment", 12 "server auth" 13 ] 14 }, 15 "client": { 16 "expiry": "8760h", 17 "usages": [ 18 "signing", 19 "key encipherment", 20 "client auth" 21 ] 22 } 23 } 24 } 25 }
*生成证书信息文件
cfssl print-defaults csr > csr.json
默认生成的模板文件如下:
1 { 2 "CN": "example.net", //标识具体的域 3 "hosts": [ //使用该证书的域名 4 "example.net", 5 "www.example.net" 6 ], 7 "key": { //加密方式,一般RSA 2048 8 "algo": "ecdsa", 9 "size": 256 10 }, 11 "names": [ //证书包含的信息,例如国家、地区等 12 { 13 "C": "US", 14 "L": "CA", 15 "ST": "San Francisco" 16 } 17 ] 18 }
⒌生成配置模板及证书信息
1 cat > ca-config.json <<EOF 2 { 3 "signing":{ 4 "default":{ 5 "expiry":"87600h" 6 }, 7 "profiles":{ 8 "kubernetes":{ 9 "expiry":"87600h", 10 "usages":[ 11 "signing", 12 "key encipherment", 13 "server auth", 14 "client auth" 15 ] 16 } 17 } 18 } 19 } 20 EOF 21 22 cat > ca-csr.json <<EOF 23 { 24 "CN":"kubernetes", 25 "key":{ 26 "algo":"rsa", 27 "size":2048 28 }, 29 "names":[ 30 { 31 "C":"CN", 32 "L":"Hebei", 33 "ST":"Zhangjiakou", 34 "O":"k8s", 35 "OU":"System" 36 } 37 ] 38 } 39 EOF
⒍使用证书信息文件生成证书
1 cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
⒎生成服务端的配置模板及证书信息
1 cat > server-csr.json << EOF 2 { 3 "CN":"kubernetes", 4 "hosts":[ 5 "127.0.0.1", 6 "192.168.0.211", 7 "192.168.0.212", 8 "192.168.0.213", 9 "10.10.10.1", 10 "kubernetes", 11 "kubernetes.default", 12 "kubernetes.default.svc", 13 "kubernetes.default.svc.cluster", 14 "kubernetes.default.svc.cluste.local" 15 ], 16 "key":{ 17 "algo":"rsa", 18 "size":2048 19 }, 20 "names":[ 21 { 22 "C":"CN", 23 "L":"Hebei", 24 "ST":"Zhangjiakou", 25 "O":"k8s", 26 "OU":"System" 27 } 28 ] 29 } 30 EOF
⒏使用证书信息生成证书
1 cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
⒐集群管理员通过该证书访问集群
1 cat > admin-csr.json <<EOF 2 { 3 "CN":"admin", 4 "hosts":[], 5 "key":{ 6 "algo":"rsa", 7 "size":2048 8 }, 9 "names":[ 10 { 11 "C":"CN", 12 "L":"Hebei", 13 "ST":"Zhangjiakou", 14 "O":"system:masters", 15 "OU":"System" 16 } 17 ] 18 } 19 EOF
⒑生成证书
1 cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
⒒
1 cat > kube-proxy-csr.json <<EOF 2 { 3 "CN":"system:kube-proxy", 4 "hosts":[], 5 "key":{ 6 "algo":"rsa", 7 "size":2048 8 }, 9 "names":[ 10 { 11 "C":"CN", 12 "L":"Hebei", 13 "ST":"Zhangjiakou", 14 "O":"k8s", 15 "OU":"System" 16 } 17 ] 18 } 19 EOF
⒓生成证书
1 cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
⒔只保留证书文件,删除多余的文件
1 ls |grep -v pem |xargs -i rm {}
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/10765038.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
分类:
Linux
, Kubernetes
如果文章内容对您有所帮助,欢迎赞赏.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!