灵魂的一般是学识,另一半是骨子里的涵养!

    

二进制安装包k8s集群部署(4)-为etcd颁发SSL证书

1.颁发步骤

加密证书我们可以向证书机构(CA)申请,但是由于我们部署在内网,我们自己自己创建一个CA后给自己颁发证书

(1)创建证书颁发机构
(2)填写表单--写明etcd所在节点的IP
(3)向证书颁发结构申请证书

2.安装cfssl

从cfssl官网中选择对应的cfssl相关可执行程序,https://pkg.cfssl.org/
这里直接使用wget下载保存到/usr/local/bin目录中

# 下载cfssl
wget -c https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
# 下载cfssl-certinfo
wget -c https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
# 下载cfssljson
wget -c https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
# 赋予cfssl相关可执行权限
chmod a+x /usr/local/bin/cfssl*

3.颁发证书

(1)创建签证机构(CA)

定义一个ca-csr.json文件,此文件定义签证机构(CA)的相关信息,填入以下内容

{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Guizhou",
            "ST": "Qiandongnan"
        }
    ]
}

使用以下命令使用配置文件中,创建一个签证机构

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

会生成一个ca.pem公钥文件和ca-key.pem私钥文件,这两个文件是CA服务器的证书。接下来我们需要给客户端颁发证书。

(2)定义证书信息
先创建一个ca-config.json文件,定义待颁发证书的基本信息(如有效时间),填写以下内容

{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}

再创建一个server-csr.json文件,定义待颁发证书的详细信息,如下

{
    "CN": "etcd",
    "hosts": [
        "192.168.56.101",
        "192.168.56.102",
        "192.168.56.103"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [{
        "C": "CN",
        "L": "Guizhou",
        "ST": "Qiandongnan"
    }]
}

相关参数:

  • CN:证书名称
  • hosts:颁发的主机
  • key:定义证书类型,algo为加密类型,size为加密长度
  • names:证书的基本信息

(3)向签证机构(CA)申请证书
完成以上步骤,使用以下命令给客户端申请证书

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

此时,多出客户端两个证书相关文件server.pem和server-key.pem,使用ls *pem命令查看,可以看到四个pem文件,如下

ca-key.pem  ca.pem  server-key.pem  server.pem

本文原创首发自微信订阅号:极客开发者up,禁止转载!

评论已关闭

  关于博主

欢迎关注博主的微信订阅号 “极客开发者up” ,第一时间接收文章更新!

  近期评论

  • 暂无评论

只有脚踏实地的人,才能够说:路,就在我的脚下。

无论你选择做什么,追求完美的程度决定你成就的高度。

这个世界最脆弱的是生命,身体健康,很重要。

上帝说:你要什么便取什么,但是要付出相当的代价。

现在站在什么地方不重要,重要的是你往什么方向移动。