cfssl使用方法重新整理说明

这篇具有很好参考价值的文章主要介绍了cfssl使用方法重新整理说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载安装:

#下载cfssl、cfssl-json、cfssl-certinfo文件
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64  -O /usr/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-certinfo

#把可执行权限授予cfssl、cfssljson、cfssl-certinfo
chmod +x /usr/bin/cfssl*

验证:

cfssl -h

cfssl 使用,python

1、cfssl 介绍                                                                                          

​​​​CFSSL是 CloudFlare 的 PKI 工具包,除此之外,它还可以​​​用于生成证书签名。

2、主要流程                                                                                            

  • 1、需要先创建根证书
  • 2、利用根证书,来颁发子证书
    • 如果将证书用在服务器端一侧,就可以称为服务器端证书
    • 如果将证书用在客户端一侧,就可以称为客户端证书
    • 依次类推

3、创建证书时,用到的配置文件简单介绍                                              

创建根证书时,需要两个配置文件,如

  • xxx-conf.json
    • 制作证书模板配置文件
    • 证书颁发机构,颁发证书时,需要参考不同模板的要求进行证书创建
  • xxx-csr.json
    • 申请证书配置文件
    • 证书申请者申请证书时,要填写的基本信息

4、证书模板配置文件ca-conf.json                                                         

根证书在创建自己的过程中或者利用根证书在创建子证书的过程中,

不是随便创建的,是根据模板来创建的,不同的模板可以出不同的特点的证书。

那么,ca-conf.json是用来存储不同模板的。

如下,内容:

{
  "signing": {
    "default": {     # 默认配置
      "expiry": "876000h"  # 签名的有效期
    },
    "profiles": {  # 由于每个证书造出来,至少都得有一个应用场景,那么profiles参数,就是来定义这些场景的
      "server": {  # server,只是一个名称,可根据业务场景自行设定名称
        "usages": [  
          "signing",  # 表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
          "key encipherment",  # 表示该证书用于秘钥加密
          "server auth",  # 表示该证书是服务器端证书, client可以用该 CA 对server提供的证书进行验证
        ],
        "expiry": "876000h"
      },
      "client": {  # client,只是一个名称,可根据业务场景自行设定名称
        "usages": [
          "signing",
          "key encipherment",
          "client auth"   # 表示该证书是客户端证书, server可以用该CA对client提供的证书进行验证
        ],
        "expiry": "876000h"
      },
      "peer": {  # peer,只是一个名称,可根据业务场景自行设定名称
        "usages": [
          "signing",
          "key encipherment",
          "server auth",
          "client auth"   # 由于这里设定了2个,所以该证书服务端和客户端都能用
        ],
        "expiry": "876000h"
      }
    }
  }
}

ca-config.json:可以定义多个场景,分别指定不同的过期时间、使用场景等参数,后续在签名证书时使用某个场景,需要在参数上指定即可。

这里注意,上面的配置文件,在真实使用的时候,是不准加注释的。回报如下错误:

cfssl 使用,python

所以,需要将ca-conf.json 文件所有注释去掉:

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

5、证书申请文件ca-csr.json                                                                  

{
  "CN": "Kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "China",
      "ST": "ShanXi",
      "L": "XiAn",
      "O": "Kubernetes",
      "OU": "CA"
    }
  ]
}

一般来说,申请证书的文件就是长这样子的。

csr 文件字段解释:

  • CN(Common Name): apiserver 从证书中提取该字段作为请求的用户名 (User Name)
  • key{}.algo:用于定义加密算法
  • key{}.size:长度
  • names[].C (Country):国家
  • names[].ST (State):州或省
  • names[].L  (Locality):地区或城市(如城市或城镇名称)
  • names[].O(Organization): 组织。一般apiserver 从证书中提取该字段作为请求用户所属的组 (Group)
  • names[].OU (Organization Unit):组织单位,如负责拥有密钥的部门; 它也可以用于“做生意”(DBS)的名称

首先,明确一点:该​​"names"​​值实际上是名称对象的列表。每个名称对象应至少包含一个“C”,“L”,“O”,“OU”或“ST”值(或这些的任意组合。也就是说,不必要全部都得有。

其次,由于这里是 CA 证书,是签发其它证书的根证书,这个证书密钥不会分发出去作为 client 证书,所有组件使用的 client 证书都是由 CA 证书签发而来,所以 CA 证书的 CN 和 O 的名称并不重要,后续其它签发出来的证书的 CN 和 O 的名称才是有用的。

证书申请时,都要提供类似的信息,可以通过配置文件xxx-csr.json,也可以命令行创建时,通过参数设置。

6、cfssl gencert -initca ca-csr.json | cfssljson -bare ca - 介绍

首先,这个命令,是用来造根证书,根秘钥的。然后,先把根证书和根秘钥造好之后,之后,才会使用根证书和根秘钥去给服务端,客户端去造认证证书。

命令: cfssl gencert -initca ca-csr.json | cfssljson -bare ca
命令: cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

是一样的效果,这里注意下,参数:cfssljson只是整理json格式,-bare主要的意义在于命名。具体来说,-bare后面给啥内容,那么生成的证书的名字就叫啥内容。

ca-csr.json, 申请证书时,需要向证书颁发机构,提交证书拥有者的一些信息。

单独执行cfssl gencert -initca ca-csr.json命令时,效果如下:

cfssl 使用,python

 这样只是相当于打印到控制台,并不保存成文件。

再执行完整的命令,结果如下:

cfssl 使用,python

 7、创建服务器端证书,证书密钥                                                           

 首先,先创建服务端的申请证书文件server-csr.json:

{
  "CN": "service",
  "hosts": [
      "127.0.0.1",
      "127.0.0.2",
      "127.0.0.3",
      "*.youku.com"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "China",
      "ST": "ShanXi",
      "L": "XiAn",
      "O": "Kubernetes",
      "OU": "CA"
    }
  ]
}

注意,这里比上面的ca-csr.json多了一个字段hosts。

hosts包含的是授权范围,不在此范围的的节点或者服务使用此证书就会报证书不匹配错误。另外,hosts也可配置区域,即一个证书的网站可以是*.youku.com也是可以是*.google.com。

接下来,生成证书的命令为:

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

参数解释:

  • -ca: 根证书
  • -ca-key: 根秘钥
  • -config: 根证书的配置文件(里面定义了很多场景)
  • -profile: 选择根证书配置文件里的一个场景
  • server-csr.json : 申请证书的对象的相关信息配置文件
  • -bare:制造的证书文件的文件名称(或前缀)

执行结果如下:

cfssl 使用,python

 8、制作客户端证书                                                                                 

一样的先造一个客户端的申请证书的配置文件client-csr.json:

{
  "CN": "mytest1",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "China",
      "ST": "ShanXi",
      "L": "XiAn",
      "O": "Kubernetes",
      "OU": "CA"
    }
  ]
}

和制作服务端证书类似,只需要改个别参数即可,命令如下:

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-conf.json -profile=client client-csr.json | cfssljson -bare client -

执行结果如下:

cfssl 使用,python

 9、使用cfssl-certinfo来查看证书信息                                                   

命令:cfssl-certinfo -cert server.pem

cfssl 使用,python

 ok,差不多就这些了.......

参考文档:grpc、https、oauth2等认证专栏实战7:使用cfssl来制作证书介绍_码二哥的博客-CSDN博客

CFSSL使用方法重新整理说明_51CTO博客_cfssl详解文章来源地址https://www.toymoban.com/news/detail-730784.html

到了这里,关于cfssl使用方法重新整理说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RedisTemplet opsForHash中方法使用说明

    opsForHash主要用于操作Redis的hash的,使用方式:redisTemplate.opsForHash().方法名,比如 以下各方法皆来自于Redis的命令,命令详细介绍参考https://blog.csdn.net/ppjsyw/article/details/125087623 相关命令 hset key field value 方法 参数说明 key:键名 hashKey:字段名 value:值 示例 相关命令 hset key field value [fie

    2024年02月01日
    浏览(29)
  • Git&GitHub的使用方法及具体的介绍说明

    GitGitHub 1 版本控制工具应该具备的功能 协同修改 多人并行不悖的修改服务器端的同一个文件。 数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。 版本管理 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运

    2024年02月04日
    浏览(35)
  • 整理SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)

    收藏保存吧,忘记的时候打开来看看 丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃) 移除:直接删除文件 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit):将暂存文件上传到本地

    2024年02月05日
    浏览(31)
  • MybatisPlus之QueryWrapper有无条件方法的使用说明

    QueryWrapper 两种重载方法,其中一种是布尔类型condition条件参数,另一种是没有布尔类型参数,比如下面这两个方法: 它们有什么区别呢? 鄙人细研究了一番,得出如下结论: boolean condition:用于指定当前这个条件是否有效;如果为 true,则使用当前条件;如果为 false,则忽

    2024年02月12日
    浏览(28)
  • 3. 5种常见卷积论文、解读、使用方法、实现代码整理(conv)

    下载地址 Convolution Series 1. Depthwise Separable Convolution Usage 2. MBConv Usage 3. Involution Usage 4. DynamicConv Usage 5. CondConv Usage Pytorch implementation of “MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications—CVPR2017” Pytorch implementatio

    2024年02月05日
    浏览(49)
  • Git基础教程-常用命令整理:学会Git使用方法和错误解决

    目录 一、了解Git的基本概念 二、Git的安装和配置 Git的安装 Git的配置 用户信息 文本编辑器 差异分析工具 查看配置信息 三、Git的基本操作 基本原理 基本操作命令 基本操作示例 场景一:创建新仓库 场景二:拉取并编辑远程仓库 四、常见问题及解决方法 解决冲突 git add文件

    2024年02月10日
    浏览(41)
  • FANUC机器人加减速倍率指令ACC的使用方法说明

    单位有一台FANUC机器人(型号:M-900iB 360kg),偶尔会在启动的瞬间会报SRVO-050碰撞检测报警,而事实上机器人并没有开始移动或和其他工件产生碰撞,一直查了很长时间,也没有查到具体的原因,也尝试过重新进行负载推算,但是偶尔还是会出现SRVO-050的报警。 关于SRVO-050 碰

    2024年02月12日
    浏览(104)
  • 史上最全OpenCV常用方法及使用说明汇总,建议收藏!

    前言 : Hello大家好,我是小哥谈。 计算机视觉的基础首先是处理图像、视频这些非结构化的数据,而图像处理库比较常用和强大的有PIL、OpenCV模块,本节课主要讲述 OpenCV常用的方法及使用说明。  🌈      目录 🚀一、基本操作  🚀二、绘图 🚀三、阈值处理 🚀四、几何

    2024年02月11日
    浏览(32)
  • 【十年网络安全工程师整理】—100渗透测试工具使用方法介绍

     渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对 某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告, 并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告, 可以清晰知晓系统中存在的安

    2024年02月02日
    浏览(41)
  • SOC系统经典IP介绍以及使用方法说明之dw_i2c

    第三章 DW_i2c功能及使用流程介绍 文章目录 前言 一、功能介绍 1.1 i2c写操作: 1.1.1 详细flow介绍 1.2 i2c读操作: 1.2.1 详细flow介绍 二、软件流程介绍 2.1 定义WDT中断服务子程序 2.2 定义main函数 三、总结      按照i2c的协议,i2c的时钟由master方提供,master可以向slave发送数据,也

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包