首页 > 其他分享 >cfssl命令详解

cfssl命令详解

时间:2022-11-14 19:47:24浏览次数:72  
标签:证书 ca json 命令 cfssl 详解 CA csr

CFSSL是CloudFlare开源的一款PKI/TLS工具。 CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务。 使用Go语言编写。

CFSSL包括:

一组用于生成自定义 TLS PKI 的工具

cfssl程序,是CFSSL的命令行工具

multirootca程序是可以使用多个签名密钥的证书颁发机构服务器

mkbundle程序用于构建证书池

cfssljson程序,从cfssl和multirootca程序获取JSON输出,并将证书,密钥,CSR和bundle写入磁盘

PKI借助数字证书和公钥加密技术提供可信任的网络身份。通常,证书就是一个包含如下身份信息的文件:

证书所有组织的信息

公钥

证书颁发组织的信息

证书颁发组织授予的权限,如证书有效期、适用的主机名、用途等

使用证书颁发组织私钥创建的数字签名

目录

1.github

https://github.com/cloudflare/cfssl

2.下载

wget https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 
wget https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 
wget https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 
chmod +x cfssl*
for x in cfssl*; do mv $x ${x%*_1.5.0_linux_amd64};  done
mv cfssl* /usr/bin

3.生成ca证书

建立集群CA keys 与Certificates

创建认证中心(CA)

CFSSL可以创建一个获取和操作证书的内部认证中心。

运行认证中心需要一个CA证书和相应的CA私钥。任何知道私钥的人都可以充当CA颁发证书。因此,私钥的保护至关重要。

生成CA证书和私钥(root 证书和私钥)

4.初始化

cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json

默认生成的模板文件如下:

   {
       "signing": {  //签名
           "default": {
               "expiry": "168h"  //默认过期时间
           },
           "profiles": {
               "www": {
                   "expiry": "8760h",
                   "usages": [
                       "signing",
                       "key encipherment",
                       "server auth"
                   ]
               },
               "client": {
                   "expiry": "8760h",
                   "usages": [
                       "signing",
                       "key encipherment",
                       "client auth"
                   ]
               }
           }
       }
   }

这个策略,有一个默认的配置,和一个profile,可以设置多个profile,这里的profile是etcd。

默认策略,指定了证书的有效期是一年(8760h)

etcd策略,指定了证书的用途

signing, 表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE

server auth:表示 client 可以用该 CA 对 server 提供的证书进行验证

client auth:表示 server 可以用该 CA 对 client 提供的证书进行验证

   {
       "CN": "example.net",  //标识具体的域
       "hosts": [  //使用该证书的域名
           "example.net",
           "www.example.net"
       ],
       "key": {  //加密方式,一般RSA 2048
           "algo": "ecdsa",
           "size": 256
       },
       "names": [  //证书包含的信息,例如国家、地区等
           {
               "C": "US",
               "L": "CA",
               "ST": "San Francisco"
           }
       ]
   }

CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法

C: Country, 国家

L: Locality,地区,城市

O: Organization Name,组织名称,公司名称

OU: Organization Unit Name,组织单位名称,公司部门

ST: State,州,省

生成配置模板及证书信息

   cat > ca-config.json <<EOF
   {
       "signing":{
           "default":{
               "expiry":"87600h"
           },
           "profiles":{
               "kubernetes":{
                   "expiry":"87600h",
                   "usages":[
                       "signing",
                       "key encipherment",
                       "server auth",
                       "client auth"
                   ]
               }
           }
       }
   }
   EOF
   cat > ca-csr.json <<EOF
   {
       "CN":"kubernetes",
       "key":{
           "algo":"rsa",
           "size":2048
       },
       "names":[
           {
               "C":"CN",
               "L":"Hebei",
               "ST":"Zhangjiakou",
               "O":"k8s",
               "OU":"System"
           }
       ]
   }
   EOF

5.使用证书信息文件生成证书

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

6.生成服务端的配置模板及证书信息

   cat > server-csr.json << EOF
   {
       "CN":"kubernetes",
       "hosts":[
           "127.0.0.1",
           "192.168.0.211",
           "192.168.0.212",
           "192.168.0.213",
           "10.10.10.1",
           "kubernetes",
           "kubernetes.default",
           "kubernetes.default.svc",
           "kubernetes.default.svc.cluster",
           "kubernetes.default.svc.cluste.local"
       ],
       "key":{
           "algo":"rsa",
           "size":2048
       },
       "names":[
           {
               "C":"CN",
               "L":"Hebei",
               "ST":"Zhangjiakou",
               "O":"k8s",
               "OU":"System"
           }
       ]
   }
   EOF

7.使用证书信息生成证书

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

8.集群管理员通过该证书访问集群

   cat > admin-csr.json <<EOF
   {
       "CN":"admin",
       "hosts":[],
       "key":{
           "algo":"rsa",
           "size":2048
       },
       "names":[
           {
               "C":"CN",
               "L":"Hebei",
               "ST":"Zhangjiakou",
               "O":"system:masters",
               "OU":"System"
           }
       ]
   }
   EOF

9.生成证书

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
  cat > kube-proxy-csr.json <<EOF
   {
       "CN":"system:kube-proxy",
       "hosts":[],
       "key":{
           "algo":"rsa",
           "size":2048
       },
       "names":[
           {
               "C":"CN",
               "L":"Hebei",
               "ST":"Zhangjiakou",
               "O":"k8s",
               "OU":"System"
           }
       ]
   }
   EOF

10.生成证书

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy

参考链接:
https://www.linux78.com/index.php?title=Cfssl#github
https://kulong0105.cn/linux/2017/06/10/an-intorduction-about-cert

标签:证书,ca,json,命令,cfssl,详解,CA,csr
From: https://www.cnblogs.com/even160941/p/16890124.html

相关文章

  • 支持多脚本语言的UDF等六大特性,TDengine 3.0计算引擎详解
    小 T 导读:在8月13日的TDengine开发者大会上,TDengine计算引擎架构师廖浩均带来题为《TDengine3.0——全新计算查询引擎的设计》的主题演讲,详细阐述了TDengine3.0......
  • TDengine 3.0 如何助力工业互联网实现边云协同?taosX 功能详解
    小 T 导读:在8月13日的TDengine开发者大会上,TDengine联合创始人侯江燚带来题为《核心代码全部开源,企业版价值何在》的主题演讲,为大家讲解了TDengine3.0企业版对......
  • 支持 10 亿个设备、100 台服务器节点,TDengine 3.0 架构详解
    在8月13日的TDengine开发者大会上,TDengine分布式系统架构师关胜亮带来题为《支持10亿时间线、100个节点的TDengine分布式系统架构设计》的主题演讲,详细阐述了T......
  • Windows命令行备份文件
    windows命令行备份文件0前言前段时间,笔者因为在C盘爆满的情况下被windows自动更新了(大概),出现了以下情况:在试了几种方法后不起作用,无奈下只能重装系统......
  • cfssl生成链式自签名证书
    生成大纲总共生成三个证书,一个根证书,一个中间证书签发商,一个服务证书。为方便理解,根证书表示为ca0,中间证书表示为ca1,服务证书表示为server。在本文中,服务证书为生成给harb......
  • git rebase 详解
    https://blog.csdn.net/weixin_42310154/article/details/119004977图解Git基本命令merge和rebase0引言网上有太多讲rebase和merge的文章,但大多都是复制粘贴没......
  • 第九章-命令执行
    第一节命令执行介绍1.1命令执行漏洞原理命令执行漏洞定义:Web应用程序接收用户输入,拼接到要执行的系统命令中执行。产生原因:1、用户输入未过滤或净化;2、拼接到系统命......
  • Pod详解之Pod生命周期
    Pod生命周期我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程:-pod创建过程-运行初始化容器(initcontainer)过程-运行主容器(mainc......
  • 详解 Spark Core 调优之数据倾斜调优(建议收藏)
    大家好,我是梦想家Alex,今天我想给大家分享一篇详解SparkCore调优的文章,本文较长,可以先收藏转发,再细细阅读....文章目录一、调优概述二、数据倾斜发生时的现象三、数据倾......
  • linux下使用wget命令提示cannot verify cmake.org's certificate
      1、在使用linux下载cmake编译器时,提示如上图错误可以看到上图提示,使用--no-check-certificate参数即可 ......