cfssl 证书 certificate

CFSSL是CloudFlare开源的一款PKI/TLS工具,CFSSL包含一个命令行工具和一个用于签名,验证并且捆绑TLS证书的HTTP API服务,环境构建方面需要 Go 1.12+。

安装一些实用的命令行工具,其中包括 cfssl、cfssljson。cfssljson 程序,从 cfssl 获取 JSON 输出,并将证书、密钥、CSR和 bundle 写入指定位置。

# 生成默认CA配置json配置文件
# ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile
$ sudo cfssl print-defaults config > ca-config.json
$ sudo cfssl print-defaults csr > ca-csr.json
[root@ho cfssl]# cfssl print-defaults config
{
    "signing": { # 表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
        "default": {
            "expiry": "168h"
        },
        "profiles": {
            "www": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth" # 表示client可以用该 CA 对server提供的证书进行验证
                ]
            },
            "client": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth" # 表示server可以用该CA对client提供的证书进行验证
                ]
            }
        }
    }
}

[root@ho cfssl]# cfssl print-defaults csr
{
    "CN": "example.net", # Common Name,从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法
    "hosts": [ # 如果 hosts 字段不为空则需要指定授权使用该证书的 IP 或域名列表
        "example.net",
        "www.example.net"
    ],
    "key": {
        "algo": "ecdsa",
        "size": 256
    },
    "names": [
        {
            "C": "US",
            "ST": "CA",
            "L": "San Francisco",
			"O": "Client-CA", # Organization,从证书中提取该字段作为请求用户所属的组 (Group)
			"OU": "System"
        }
    ]
}
# 生产CA证书和私钥
# 根证书文件: ca.pem
# 根证书私钥: ca-key.pem
# 根证书申请文件: ca.csr
$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章