• 高可用Kubernetes集群-2. ca证书与秘钥


    四.CA证书与秘钥

    kubernetes集群安全访问有两种方式:"基于CA签名的双向数字证书认证"与"基于BASE或TOKEN的简单认证",生产环境推荐使用"基于CA签名的双向数字证书认证"。

    本文档采用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件,CA 是自签名的证书,用来签名后续创建的其它 TLS 证书。

    以kubenode1为例,kubenode2&kubenode3做适当小调整。

    1. 安装CFSSL

    [root@kubenode1 ~]# mkdir -p /usr/local/cfssl
    [root@kubenode1 ~]# cd /usr/local/cfssl/
    
    # cfssl
    [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    [root@kubenode1 cfssl]# mv cfssl_linux-amd64 cfssl
    [root@kubenode1 cfssl]# chmod +x cfssl
    
    # cfssl-certinfo
    [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
    [root@kubenode1 cfssl]# mv cfssl-certinfo_linux-amd64 cfssl-certinfo
    [root@kubenode1 cfssl]# chmod +x cfssl-certinfo
    
    # cfssljson
    [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    [root@kubenode1 cfssl]# mv cfssljson_linux-amd64 cfssljson
    [root@kubenode1 cfssl]# chmod +x cfssljson

    2. 生成CA模板

    # kubenode1节点完成即可
    [root@kubenode1 ~]# cd /usr/local/cfssl/
    
    # 生产CA配置文件模板
    [root@kubenode1 cfssl]# cfssl print-defaults config > config.json
    
    # 生产CA证书签名请求文件模板
    [root@kubenode1 cfssl]# cfssl print-defaults csr > csr.json

    3. CA配置文件

    # kubenode1节点完成即可,以下的CA证书,签名等可通过scp分发到kubenode2&kubenode3;
    # ca-config.json:1个profiles,分别指定不同的过期时间,使用场景等参数,根据需要在不同场景使用不同的profile签名证书;这里以生成的模板为基础修改;
    # “signing”:表示该证书可用于签名其他证书,生成的ca.pem证书中CA=TRUE;
    # ”server auth“:client可用该CA对server提供的证书进行验证;
    # “client auth”:server可用该CA对client提供的证书进行验证;
    # 注意每个模块或每行有或没有“,”的区别
    [root@kubenode1 cfssl]# cp config.json ca-config.json
    [root@kubenode1 cfssl]# vim ca-config.json
    {
        "signing": {
            "default": {
                "expiry": "8760h"
            },
            "profiles": {
                "kubernetes": {
                    "expiry": "8760h",
                    "usages": [
                        "signing",
                        "key encipherment",
                        "server auth",
                        "client auth"
                    ]
                }
            }
        }
    } 

    4. CA证书签名请求

    # “CN”:Common Name,kube-apiserver从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
    # “O”:Organization,kube-apiserver从证书中提取该字段作为请求用户所属的组(Group)
    [root@kubenode1 cfssl]# cp csr.json ca-csr.json
    [root@kubenode1 cfssl]# vim ca-csr.json
    {
        "CN": "kubernetes",
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "ST": "ChengDu",
                "L": "ChengDu",
                "O": "k8s",
                "OU": "cloudteam"
            }
        ]
    } 

    5. 生成CA证书与秘钥

    [root@kubenode1 cfssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    [root@kubenode1 cfssl]# ls ca*

    # 简单查看
    [root@kubenode1 cfssl]# cfssl-certinfo -cert ca.pem

    6. 分发CA证书

    # 将生成的CA证书,秘钥,配置文件等分发到所有机器;
    # ca-key.pem与ca.pem重要
    [root@kubenode1 ~]# mkdir -p /etc/kubernetes/ssl
    [root@kubenode1 ~]# cp /usr/local/cfssl/ca* /etc/kubernetes/ssl/
    [root@kubenode1 ~]# scp /usr/local/cfssl/ca* root@172.30.200.22:/etc/kubernetes/ssl/
    [root@kubenode1 ~]# scp /usr/local/cfssl/ca* root@172.30.200.23:/etc/kubernetes/ssl/
  • 相关阅读:
    Git合并开发代码分支到测试代码分支
    用webdriver+phantomjs实现无浏览器的自动化过程
    软件测试工作中涉及的Linux命令整理
    Windows系统端口占用情况检查脚本
    PowerShell调用jira rest api实现对个人提交bug数的统计
    地下城堡游戏小脚本儿——自动炼金
    Java中通过JDBC远程连接Oracle数据库
    PowerShell调用jira rest api实现jira统计自动化
    【Spring】12、Spring Security 四种使用方式
    【hibernate】1、Hibernate的一个注解 @Transient
  • 原文地址:https://www.cnblogs.com/netonline/p/8665800.html
Copyright © 2020-2023  润新知