k8s证书自签笔记

k8s 证书自签

  1. 获取组件

    wget  https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
    
  2. 创建一个名为TLS的文件夹,并将组件文件移动到该文件夹下,同时添加可习性权限

    #创建TLS文件夹
    mkdir -p  ~/TLS
    #移动文件
    mv cfssl_linux-amd64 ~/TLS/cfssl
    mv cfssljson_linux-amd64 ~/TLS/cfssljson
    mv cfssl-certinfo_linux-amd64 ~/TLS/cfssl-certinfo
    # 添加可执行权限
    chmod +x cfssl-certinfo_linux-amd64 cfssljson_linux-amd64 cfssl_linux-amd64
    
  3. 使用命令行工具将模板配置生成到你自己的配置文件中

    # 原理:证书需要证书签发机构(CA)来签发,而证书的签发机构(CA)需要相关的配置文件来定义
    # 执行cfssl命令,并添加print-defaults config > 你自己的证书配置文件,将默认的CA配置
    # 发送到你的CA配置文件中
    cfssl print-defaults config > ca-config.json
    # 此处我需要生成kubernetes 证书签发机构,所以需将ca-congfig.json文件中的profiles下的
    # www 改为 kubernetes,default下的生效时间需要修改的尽量大一点
    vim ca-config.json
    {
               "signing": {
                 "default": {
                   "expiry": "87600h"
                             },
                 "profiles": {
                   "kubernetes": {
                      "expiry": "87600h",
                      "usages": [
                         "signing",
                         "key encipherment",
                         "server auth",
                         "client auth"
                     ]
         		      }
    	             }
    	           }
    	        }
    
  4. 使用命令行工具将csr请求模板重定向到你自己的csr请求(证书请求文件)文件中

    # 原理:证书签发是通过将公钥、国家、城市、域名等信息封装在csr请求中,发送给证书签发机构(CA),
    # 由证书签发机构(CA)进行签名,然后返回证书crt文件
    cfssl print-defaults csr > ca-csr.json
    # 此处需要注意,需要为host添加可访问地址
    # 添加"O": "CA",
    vim ca-csr.json
    		 {
        		"CN": "kubernetes",
    		    "hosts": [
    		    "192.168.0.179",
    			"192.168.0.25",
    			"192.168.0.93"
    		    ],
    		    "key": {
    		        "algo": "rsa",
    		        "size": 2048
    		    },
    		    "names": [
    		        {
    		            "C": "CN",
    		            "L": "Chengdu",
    		            "ST": "Chengdu",
    			    	"O": "CA",		
    			    	"OU": "System"
    		        }
    		    ]
    		 }
    
  5. 签发CA证书

    # 使用cfssl生成证书
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    # 生成证书如下,即:ca.pem 
    [root@master TLS]# ls *.pem
    ca.pem  ca-key.pem
    
  6. 创建server证书请求文件

    # 通过ca-csr.json 生成 server-csr.json
    cat ca-csr.json > server-csr.json
    # server-csr.json 需要将集群的ip添加到hosts中,集群才能够利用https进行访问
    vim server-csr.json
    {
        "CN": "kubernetes",
        "hosts": [
            "10.0.0.1",
            "127.0.0.1""kubernetes",
            "kubernetes.default",
            "kubernetes.default.svc",
            "kubernetes.default.svc.cluster",
            "kubernetes.default.svc.cluster.local",
            "192.168.0.179",
            "192.168.0.25",
            "192.168.0.93"
        ],
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "L": "Shaanxi",
                "ST": "Xian",
    	    "O":"k8s",	
    	    "OU":"system"
            }
        ]
    }
    
  7. 生成server证书

    # 参数profile需要注意的是:需要和ca-config中的配置一致
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json \
     -profile=kubernetes server-csr.json | cfssljson -bare server
    
  8. 创建admin用户证书请求文件

    # 创建admin用户的证书签发请求
    cat ca-csr.json > admin-csr.json
    # 修改CN 为 admin
    vim admin-csr.json
    {
        "CN": "admin",
        "hosts":[],
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "L": "Shaanxi",
                "ST": "Xian",
                "OU":"CA",
                "ST":"Xian"
            }
        ]
    }
    
    
  9. 签发admin用户证书

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
    
  • 个人能力一般,如有错误,还希望各位朋友不吝赐教,我尽快及时改正。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页