搬瓦工 VPS CFSSL 私有证书颁发机构搭建教程
CFSSL(Cloudflare SSL)是由 Cloudflare 开源的 PKI/TLS 工具套件,提供命令行工具和 HTTP API 服务两种使用方式。相比纯 OpenSSL 操作,CFSSL 使用 JSON 配置文件,操作更加规范和自动化,特别适合 Kubernetes 集群证书管理和内部微服务的 mTLS 认证。本文将介绍如何在搬瓦工 VPS 上使用 CFSSL 搭建私有 CA。
一、安装 CFSSL
# 下载 CFSSL 工具
wget -O /usr/local/bin/cfssl https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssl_1.6.5_linux_amd64
wget -O /usr/local/bin/cfssljson https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssljson_1.6.5_linux_amd64
wget -O /usr/local/bin/cfssl-certinfo https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssl-certinfo_1.6.5_linux_amd64
chmod +x /usr/local/bin/cfssl*
# 验证安装
cfssl version
二、创建 CA 根证书
2.1 创建 CA 配置
mkdir -p /opt/cfssl-ca && cd /opt/cfssl-ca
cat > ca-csr.json <<'EOF'
{
"CN": "My Root CA",
"key": {
"algo": "rsa",
"size": 4096
},
"names": [
{
"C": "CN",
"ST": "Shanghai",
"L": "Shanghai",
"O": "MyCompany",
"OU": "IT Security"
}
],
"ca": {
"expiry": "87600h"
}
}
EOF
2.2 生成 CA 证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
# 生成文件说明:
# ca.pem - CA 证书
# ca-key.pem - CA 私钥(妥善保管)
# ca.csr - CA 证书签名请求
三、配置证书签发策略
cat > ca-config.json <<'EOF'
{
"signing": {
"default": {
"expiry": "8760h"
},
"profiles": {
"server": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"server auth"
]
},
"client": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"client auth"
]
},
"peer": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
四、签发服务器证书
cat > server-csr.json <<'EOF'
{
"CN": "app.example.com",
"hosts": [
"app.example.com",
"www.example.com",
"10.0.0.1",
"127.0.0.1"
],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "CN",
"ST": "Shanghai",
"L": "Shanghai",
"O": "MyCompany"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \
-config=ca-config.json -profile=server \
server-csr.json | cfssljson -bare server
五、签发客户端证书(mTLS)
cat > client-csr.json <<'EOF'
{
"CN": "client-service",
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "CN",
"O": "MyCompany",
"OU": "Engineering"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \
-config=ca-config.json -profile=client \
client-csr.json | cfssljson -bare client
六、启动 CFSSL API 服务
# 启动 CA 服务(提供 HTTP API)
cfssl serve \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-address=0.0.0.0 \
-port=8888 &
# 通过 API 签发证书
curl -X POST -H "Content-Type: application/json" \
-d '{"request":{"CN":"api.example.com","hosts":["api.example.com"],"key":{"algo":"ecdsa","size":256}}}' \
http://127.0.0.1:8888/api/v1/cfssl/newcert
七、证书查看与验证
# 查看证书信息
cfssl-certinfo -cert server.pem
# 验证证书链
openssl verify -CAfile ca.pem server.pem
# 查看证书有效期
openssl x509 -in server.pem -noout -dates
八、Kubernetes 证书管理
CFSSL 是 Kubernetes 手动部署中最常用的证书工具,可以为 etcd、kube-apiserver、kubelet 等组件签发 TLS 证书,实现集群通信加密和 mTLS 认证。
总结
CFSSL 提供了比 OpenSSL 更自动化的 PKI 管理方案,JSON 配置使得证书操作更加标准化和可重复。对于更完整的 ACME 协议支持,可以参考 Step CA;对于企业级密钥管理,推荐 HashiCorp Vault PKI。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。