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 ========