一 创建CA证书和密钥

1.1 安装cfssl工具集

  1 [root@k8smaster01 ~]# mkdir -p /opt/k8s/cert
2
3 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /opt/k8s/bin/cfssl #下载cfssl软件
4 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /opt/k8s/bin/cfssljson #下载json模板
5 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /opt/k8s/bin/cfssl-certinfo
6 [root@k8smaster01 ~]# chmod u+x /opt/k8s/bin/*
7 [root@k8smaster01 ~]# export PATH=/opt/k8s/bin:$PATH

1.2 创建根证书

  1 [root@k8smaster01 ~]# mkdir -p /opt/k8s/work
2 [root@k8smaster01 ~]# cd /opt/k8s/work
3 [root@k8smaster01 work]# cfssl print-defaults config > config.json
4 [root@k8smaster01 work]# cfssl print-defaults csr > csr.json #创建模版配置json文件
5 [root@k8smaster01 work]# cp config.json ca-config.json #复制一份作为CA的配置文件
6 [root@k8smaster01 work]# cat > ca-config.json <<EOF
7 {
8 "signing": {
9 "default": {
10 "expiry": "168h"
11 },
12 "profiles": {
13 "kubernetes": {
14 "expiry": "87600h",
15 "usages": [
16 "signing",
17 "key encipherment",
18 "server auth",
19 "client auth"
20 ]
21 }
22 }
23 }
24 }
25 EOF
字段解释:
config.json:可以定义多个profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个profile;
  • signing: 表示该证书可用于签名其它证书;生成的ca.pem 证书中CA=TRUE;
  • server auth: 表示client 可以用该CA 对server 提供的证书进行校验;
  • client auth: 表示server 可以用该CA 对client 提供的证书进行验证。
  1 [root@k8smaster01 work]# cp csr.json ca-csr.json					#复制一份作为CA的证书签名请求文件
2 [root@k8smaster01 work]# cat > ca-csr.json <<EOF
3 {
4 "CN": "kubernetes",
5 "key": {
6 "algo": "rsa",
7 "size": 2048
8 },
9 "names": [
10 {
11 "C": "CN",
12 "ST": "Shanghai",
13 "L": "Shanghai",
14 "O": "k8s",
15 "OU": "System"
16 }
17 ]
18 }
19 EOF
字段解释:
  • CN: Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
  • C:country;
  • ST:state;
  • L:city;
  • O: Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group);
  • OU:organization unit。
  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca #生成CA密钥(ca-key.pem)和证书(ca.pem)
提示:生成证书后,Kubernetes集群需要双向TLS认证,则可将ca-key.pem和ca.pem拷贝到所有要部署的机器的/etc/kubernetes/ssl目录下。


更多TLS证书创建方式参考《附008.Kubernetes TLS证书介绍及创建》。

1.3 分发证书

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
3 [root@k8smaster01 work]# for all_ip in ${ALL_IPS[@]}
4 do
5 echo ">>> ${all_ip}"
6 ssh root@${all_ip} "mkdir -p /etc/kubernetes/cert"
7 scp ca*.pem ca-config.json root@${all_ip}:/etc/kubernetes/cert
8 done

最新文章

  1. MYSQL新手入门篇
  2. 自己第一个github开源的感受
  3. (一)sql入门 导读
  4. Flat UI 工具包
  5. 自己存档:asp.net mvc 从filterContent得到controller和action
  6. missing locales
  7. SQL Server-游标使用
  8. Why we made vorlon.js and how to use it to debug your JavaScript remotely
  9. C语言编写的随机产生四则运算测试题
  10. CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
  11. Codevs 1684 垃圾陷阱
  12. 理解sparse coding
  13. exists改写SQL,使其走正确的执行计划
  14. Android之TextureView浅析
  15. python教程6-3:排序
  16. EJS 语法
  17. 【MySQL 读书笔记】RR(REPEATABLE-READ)事务隔离详解
  18. [Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间
  19. sort();对结构体数组的排序
  20. Xshell安装后,使用的优化

热门文章

  1. vodevs3031 最富有的人
  2. bugku color
  3. Orecle基本概述(1)
  4. 阿里云 RDS 数据库又发 CPU 近 100% 的“芯脏病”
  5. EasyExcel 轻松灵活读取Excel内容
  6. i春秋DMZ大型靶场实验(二)提权漏洞
  7. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
  8. 基础安全术语科普(四)——RFID
  9. ASP.NET Core中的配置
  10. Java网络编程(二)IP、URL和HTTP