cfssl创建ca证书,调整ca证书的有效期

本文详细指导如何使用cfssl创建CA证书,包括生成CSR文件、配置签发策略,修改CA证书有效期,并演示了如何根据需求调整证书有效期,最终生成有效期为20年的ca证书。

1. 使用cfssl创建ca证书

1.1 生成ca证书的证书请求文件ca-csr.json

cfssl print-defaults csr > ca-csr.json
结果:

cat ca-csr.json 
{
    "CN": "example.net",
    "hosts": [
        "example.net",
        "www.example.net"
    ],
    "key": {
        "algo": "ecdsa",
        "size": 256
    },
    "names": [
        {
            "C": "US",
            "L": "CA",
            "ST": "San Francisco"
        }
    ]
}

1.2 创建cfssl的配置文件(其实对ca证书没什么用)

cfssl print-defaults config > ca-config.json
结果:

cat ca-config.json
{
    "signing": {
        "default": {
            "expiry": "168h"
        },
        "profiles": {
            "www": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth"
                ]
            },
            "client": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth"
                ]
            }
        }
    }
}

1.3 创建ca证书

cfssl gencert -initca ca-csr.json |cfssljson -bare ca
结果:

cfssl gencert -initca ca-csr.json |cfssljson -bare ca
2021/12/07 17:18:29 [INFO] generating a new CA key and certificate from CSR
2021/12/07 17:18:29 [INFO] generate received request
2021/12/07 17:18:29 [INFO] received CSR
2021/12/07 17:18:29 [INFO] generating key: ecdsa-256
2021/12/07 17:18:29 [INFO] encoded CSR
2021/12/07 17:18:29 [INFO] signed certificate with serial number 347161065711743393599864539791099567853430930598

新创建的文件包括:
ca证书:ca.pem
ca私钥:ca-key.pem
ca证书请求文件:ca.csr

1.4 查看ca证书有效期

cfssl certinfo -cert ca.pem |grep not
结果

cfssl certinfo -cert ca.pem |grep not
  "not_before": "2021-12-07T09:13:00Z",
  "not_after": "2026-12-06T09:13:00Z",

可以看出来ca证书的有效期是5年。

2. 修改ca证书有效期

使用cfssl签发一般服务证书的时候可以通过ca-config.json中的profile参数配置服务证书的有效期。
配置ca证书的有效期需要在ca证书请求文件ca-csr.json配置。

2.1 配置方法:

ca-csr.json中添加字段: "CA":{"expiry":"175200h"},

如下:

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

2.2 重新生成ca证书

# 使用修改后的ca-csr.json创建ca证书
cfssl gencert -initca ca-csr.json |cfssljson -bare ca
2021/12/07 19:48:01 [INFO] generating a new CA key and certificate from CSR
2021/12/07 19:48:01 [INFO] generate received request
2021/12/07 19:48:01 [INFO] received CSR
2021/12/07 19:48:01 [INFO] generating key: ecdsa-256
2021/12/07 19:48:01 [INFO] encoded CSR
2021/12/07 19:48:01 [INFO] signed certificate with serial number 698387629496571533773096688804230393778863690470

# 确认ca证书有效期为20年。
cfssl certinfo -cert ca.pem |grep not
  "not_before": "2021-12-07T11:43:00Z",
  "not_after": "2041-12-02T11:43:00Z",

======== END ========

CFSSL(Cloud Foundry Security Substrate Library)是一个用于生成安全证书、签发和管理的安全工具。在创建Etcd(一个分布式键值存储系统)证书时,可以使用cfssl命令行工具,按照以下步骤操作: 1. 安装cfssl和etcd-ca-gen插件: 首先,你需要安装`cfssl`和`etcd-ca-gen`。你可以从GitHub克隆它们,或者通过包管理器如`go get`来获取。 ```bash go get github.com/cloudflare/cfssl go get github.com/coreos/etcd/ca ``` 2. 创建配置文件(config.json): 编辑`cfssl`的配置文件,添加Etcd CA的信息,例如CA名称和有效期等。示例配置如下: ```json { "signing": { "default": { "expiry": "8760h", "usages": ["client", "server"], "hosts": ["your-etcd-cluster.example.com"] } }, "profiles": { "etcd-ca": { " signing": { ... }, // 使用默认配置 "key": { "algo": "rsa", "size": 2048 }, "crs": { "uri": "https://example.com/certs/ca-csr.csr" } // 如果有外部根证书 } } } ``` 3. 生成私钥(ca-key.pem): 使用`cfssl gencert`命令生成CA的私钥: ```bash cfssl gencert -initca config.json | cfssljson -bare etcd-ca ``` 4. 提交CSR(Certificate Signing Request): 如果你想让第三方颁发证书,需要提交`csr.json`文件到相应服务器;否则跳过这一步。 5. 签署并生成证书: 使用`cfssl sign`命令签署生成的私钥和CSR(如果有的话),得到Etcd客户端和服务端证书: ```bash cfssl gencert -ca=etcd-ca.pem -ca-key=etcd-ca-key.pem \ -profile=etcd-ca -hostname="your-etcd-server.example.com" config.json > etcd-server-cert.pem cfssl gencert -ca=etcd-ca.pem -ca-key=etcd-ca-key.pem \ -profile=etcd-ca -hostname="your-etcd-client.example.com" config.json > etcd-client-cert.pem ``` 6. (可选)打包证书: 将生成的公钥、私钥和证书文件分别放入合适的目录供Etcd使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值