搬瓦工 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 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。