momo's Blog.

CA数字证书配置详解

字数统计: 648阅读时长: 2 min
2020/03/19 Share

一、前言

本文主要针对于 cfssl 工具使用 以及 CA配置进行一次详细说明

二、下载cfssl工具

  • 请自行去github下载相同版本的cfssl
    1
    2
    3
    4
    5
    6
    7
    curl -s -L -o /bin/cfssl https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64



    mv cfssl_1.4.1_linux_amd64 /bin/cfssl
    mv cfssljson_1.4.1_linux_amd64 /bin/cfssljson
    mv cfssl-certinfo_1.4.1_linux_amd64 /bin/cfssl-certinfo

三、配置详解

1
2
cfssl print-defaults config >ca-config.json
cfssl print-defaults csr > ca-csr.json
  • ca-config.json default
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    {
    "signing": {
    "default": {
    "expiry": "168h"
    },
    "profiles": {
    "www": {
    "expiry": "8760h",
    "usages": [
    "signing",
    "key encipherment",
    "server auth"
    ]
    },
    "client": {
    "expiry": "8760h",
    "usages": [
    "signing",
    "key encipherment",
    "client auth"
    ]
    }
    }
    }
    }
    ```

    - ca-csr.json `default` (Certificate signing request)
    证书签名请求

{
“CN”: “example.net”,
“hosts”: [
“example.net”,
www.example.net"
],
“key”: {
“algo”: “ecdsa”,
“size”: 256
},
“names”: [
{
“C”: “US”,
“ST”: “CA”,
“L”: “San Francisco”
}
]
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

`ca-config` 是CA颁发中心的配置
`ca-csr` 是用户向CA中心申请证书时带过去的参数

- 数字证书中各字段的含义:

字段名 | 字段值
---|---
公用名称 (Common Name) | 简称:CN 字段,对于 SSL 证书,一般为网站域名;而对于代码签名证书则为申请单位名称;而对于`客户端证书则为证书申请者的姓名`;
hosts|指定授权使用该证书的节点 IP,或者域名
所在城市 (Locality)|简称:L 字段
所在国家 (Country)|简称:C 字段,只能是国家字母缩写,如中国:CN
所在省份 (State/Provice) | 简称:S 字段


- 其他一些字段

字段名 | 字段值
---|---
电子邮件 (Email)|简称:E 字段
多个姓名字段 | 简称:G 字段
介绍|Description 字段
电话号码:| Phone 字段,格式要求 + 国家区号 城市区号 电话号码,如: +86 732 88888888
地址: | STREET 字段
邮政编码: | PostalCode 字段
显示其他内容|简称:OU 字段




**client certificate:** 用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端
**server certificate:** 服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver
**peer certificate:** 双向证书,用于etcd集群成员间通信


简单的理解,可以把证书类型分为3类,一个是`server cert` 服务端证书, `client cert` 客户端证书,对等证书 `peer cert`


下方配置分别配置了服务端证书,客户端证书,以及对等证书


建立服务端,客户端或者对等证书时,需要先生存`根证书`

- 根证书

{
“CN”: “etcd-root-ca”,
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“names”: [
{
“C”: “CN”,
“ST”: “Shanhai”,
“L”: “Shanhai”,
“O”: “Mu77Mu77”,
“OU”: “ops”
}
]
}

1
2

- CA中心配置

{
“signing”: {
“default”: {
“expiry”: “87600h”
},
“profiles”: {
“peer”: {
“usages”: [
“signing”,
“key encipherment”,
“server auth”,
“client auth”
],
“expiry”: “87600h”
},
“client”: {
“usages”: [
“signing”,
“key encipherment”,
“client auth”
],
“expiry”: “87600h”
},
“server”: {
“usages”: [
“signing”,
“key encipherment”,
“server auth”
],
“expiry”: “87600h”
}
}
}
}

```

CATALOG
  1. 1. 一、前言
  2. 2. 二、下载cfssl工具
  3. 3. 三、配置详解