Smallstep Certificates 介绍与选型指南

Smallstep Certificates(step-ca)私有 CA 与 ACME 服务器定位、X.509+SSH 双 CA 架构解析,及与 Vault PKI、OpenBao、easy-rsa、cfssl 的量化选型对比

Smallstep CertificatesSmallstep CertificatesPKI 证书证书管理信息安全2026/10/31

Smallstep Certificates 介绍与选型指南

目标:说清 Smallstep Certificates(step-ca)作为私有证书颁发机构(X.509 + SSH CA)与 ACME 服务器的定位、架构与能力边界,并与 Vault PKI、OpenBao、easy-rsa、cfssl 做量化对比,帮助读者在十分钟内完成"是否选它"的判断。本文所有外部信息均溯源至官方文档与公开评测,查询日期统一为 2026-10-31。

一、环境信息

  • 服务器操作系统:Linux(amd64)
  • Smallstep CA(step-ca)版本:0.30.2(Smallstep CA/0.30.2 linux/amd64,Release Date: 2026-03-23 00:18 UTC,已在本地环境实证)
  • Smallstep CLI(step)版本:0.30.2(Smallstep CLI/0.30.2 linux/amd64,Release Date: 2026-03-22 23:21 UTC,已在本地环境实证)
  • CA 服务地址:https://ca.stepca.internal:9000(服务监听 9000 端口,服务器对外暴露 8128 端口)
  • PKI 数据目录(STEPPATH):/home/step(含 certs/、secrets/、config/、db/、templates/)
  • 根证书指纹:2a4d06b866972e6227494089dc788d6706f70f10ed102c7261607b860c45ff5e
  • 本文对比数据来源与查询日期:Smallstep 官方文档站 smallstep.com/docs/step-ca、GitHub 仓库 smallstep/certificates、GStars.dev 仓库洞察、HashiCorp Developer(Vault PKI)、linuxvox.com CA 工具评测、pistack.xyz 与 khimananda.com 2026 年自托管 PKI 评测,查询日期均为 2026-10-31。

💡 说明:本文为介绍与选型篇,所有结论以官方文档与公开评测为据,不涉及本地性能实测;部署、配置与 CLI 命令的逐条实测见本专栏后续篇章。

二、软件概述

2.1 定位:私有 CA 与 ACME 服务器

Smallstep Certificates(项目名 step-ca,主仓库 smallstep/certificates)是 Smallstep 公司开源的私有证书颁发机构(CA)与 ACME 服务器,官方对其的一句话定义是:"A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH"(来源:GitHub smallstep/certificates README,查询日期 2026-10-31)。

它解决的核心痛点是:内网服务(API、数据库、虚拟机、内部站点)无法从公网 CA(如 Let's Encrypt)获得证书——公网 CA 不能为私有 IP 与内部域名签发证书(来源:khimananda.com《Run an Internal Certificate Authority with step-ca》,查询日期 2026-10-31)。step-ca 让企业自建一套与公网 CA 同等合规(RFC 5280、CA/Browser Forum)的签发体系,并内置 ACME(RFC 8555)协议支持,使 certbot、Caddy、cert-manager 等标准 ACME 客户端可以零改造接入。

step-ca 由两个配套二进制组成:

  • step-ca:CA 服务端进程,暴露 JSON/HTTPS API,负责证书的签发、续期、吊销(来源:Smallstep 官方设计文档 prof.infra.smallstep.com《The Design & Architecture of Smallstep》,查询日期 2026-10-31);
  • step:客户端 CLI(Smallstep CLI),面向开发者与运维,负责 step ca certificate 签发、step ca renew 续期、step certificate inspect 检查等日常操作。

💡 技术拓展:私有 CA 领域的可选路线大致分三类——专用 CA 软件(step-ca、cfssl、easy-rsa):只做证书签发,部署轻;秘密管理平台内嵌 PKI 引擎(Vault PKI、OpenBao):证书只是众多秘密类型之一,适合已部署该平台的企业;反向代理/Ingress 内建 CA(Caddy 内部 CA、Kubernetes cert-manager 签发对象):面向特定场景。本文第七章将逐项量化对比。

2.2 开源许可与版本节奏

维度事实来源(查询日期 2026-10-31)
开源许可Apache-2.0GStars.dev 仓库洞察、pkg.go.dev v0.30.0-rc6 页面
仓库创建时间2018 年 11 月GStars.dev
最近提交2026 年 10 月(持续活跃)GStars.dev
GitHub Stars约 8k+GStars.dev(Updated 10/10/2026)
最新版本0.30.2(2026-03-22/23 发布)本地实证 step-ca version、step version
官方文档smallstep.com/docs/step-ca(含配置、provisioner、生产考量全套文档)官方文档站
商业支持Smallstep 公司提供商业版(托管 CA、SSO 集成等)smallstep.com/open-source

版本号采用 0.x 序列,从 2018 年开源至今保持高频迭代;0.30.2 为 2026 年 3 月发布的稳定版。官方另设 Discord 社区与 GitHub Discussions 作为反馈渠道(来源:step ca init 完成后的官方输出信息,本地实证)。

⚠️ 注意:step-ca 开源版无 Web 管理界面,全部操作通过 CLI 与 JSON/HTTPS API 完成;若强依赖图形界面管控,需评估 Smallstep 商业版或改用 Vault/OpenBao。

三、核心架构

3.1 PKI 层级

step-ca 初始化(step ca init)即生成标准两级 PKI:

Root CA(根证书,离线保存私钥)
  └── Intermediate CA(中间证书,在线签发私钥)
        ├── X.509 叶子证书(服务器/客户端)
        └── SSH 用户证书 / 主机证书

根证书私钥建议离线封存,日常签发由中间 CA 完成,这是行业标准的密钥隔离实践(来源:Smallstep 官方文档《step-ca Certificate Authority Overview》,查询日期 2026-10-31)。中间证书私钥由 CA 密码(provisioner password)加密存储,服务进程通过 --password-file 注入解锁。

3.2 服务端与客户端分工

step-ca 的架构是"瘦客户端 + API 服务端":

  • CA 服务端只暴露少数 HTTPS 端点(/health、/sign、/renew、/revoke、ACME 目录等),无状态可水平扩展(会话状态依赖本地 badger 数据库,见 3.4);
  • 客户端(step CLI)在本地生成密钥对,私钥永不离开客户端机器,只把 CSR(证书签名请求)提交给 CA——这是与 easy-rsa"集中生成密钥再分发"模式的本质区别,显著降低私钥泄露面(来源:官方设计文档 prof.infra.smallstep.com,查询日期 2026-10-31)。

3.3 Provisioner 认证体系

Provisioner 是 step-ca 的签发策略抽象:谁有资格签、按什么规则签。开源版内置多种 provisioner 类型(来源:官方文档 smallstep.com/docs/step-ca,查询日期 2026-10-31):

Provisioner 类型用途典型场景
JWK初始管理员,密码学证明运维手工签发、初始化
ACMERFC 8555 自动签发certbot/Caddy/cert-manager 自动化
OIDC单点登录身份令牌换取 SSH 用户证书企业 SSO 接 SSH
X5C用已有 X.509 证书互认签发服务间信任链延伸
SCEP传统网络设备(路由器/交换机)接入MDM、网络设备纳管
GCP / AWS云实例身份文档证明云上工作负载自动身份
K8s SAKubernetes ServiceAccount 令牌Pod 内自动签发
NebulaNebula overlay 网络证书零信任网络
Webhook签发前调用外部 HTTP 服务做策略裁决自定义审批/风控

3.4 存储与运行时

  • 证书状态数据库默认使用 badger(嵌入式 KV 存储,目录 db/),记录证书序列号、吊销状态等,供 /revoke 与 OCSP 类查询使用;
  • 配置全部集中在 ca.json 单文件(根/中间证书路径、监听地址、DNS 名称、provisioners、TLS 套件等);
  • 日志支持 text/JSON 格式,直接对接 systemd journal 或日志采集器(来源:官方配置文档 smallstep.com/docs/step-ca/configuration,查询日期 2026-10-31)。

四、功能特性

4.1 X.509 证书签发

  • 签发 HTTPS 服务器与客户端证书,浏览器可直接信任(RFC 5280 与 CA/Browser Forum 合规)(来源:GitHub README,查询日期 2026-10-31);
  • 面向 DevOps 场景:虚拟机、容器化服务、API、数据库连接、Kubernetes Pod 均可纳入;
  • 支持 mTLS 双向认证、文档签名等 X.509 广义用途(来源:官方文档《step-ca Certificate Authority Overview》,查询日期 2026-10-31);
  • 证书有效期可通过 provisioner claims 精细控制,官方推荐短有效期(如 24 小时)配合自动续期实现"易失性证书"安全模型。

4.2 SSH 证书:双 CA 能力

step-ca 同时内置 X.509 CA 与 SSH CA,这是它与 easy-rsa、cfssl 的关键差异:

  • SSH 用户证书:用户以 OIDC 单点登录身份令牌换取短期 SSH 证书,实现"SSO for SSH",替代 static authorized_keys 分发(来源:GitHub README,查询日期 2026-10-31);
  • SSH 主机证书:主机以云实例身份文档(如 AWS EC2 identity document)换取主机证书,消除首次连接的 TOFU 信任问题;
  • OpenSSH 原生支持证书认证(TrustedUserCAKeys、HostCertificate),客户端无需安装额外软件。

4.3 ACME 自动化

  • 内置 ACME Server(RFC 8555 一等公民支持),http-01/dns-01 等挑战方式可用(来源:官方文档与 khimananda.com 对比表,查询日期 2026-10-31);
  • 任何标准 ACME 客户端(certbot、Caddy、Traefik、Kubernetes cert-manager 的 ACME issuer)把 directory URL 指向 step-ca 即可工作;
  • 与 Let's Encrypt 的 ACME 流程完全一致,仅根信任不同——这是"先在自建 CA 上演练、再切公网 CA"的最佳载体。

4.4 生命周期自动化

  • step ca renew 支持在证书到期前自动续期,客户端可常驻续期守护(--daemon 模式);
  • step ca revoke 在线吊销,状态落库;
  • 证书内容可通过 Go template 定制(SAN、KeyUsage、扩展项);
  • 支持 CRL(证书吊销列表)发布——生产考量文档给出了静态 CRL 文件配合对象存储/CDN 分发的方案(来源:官方生产考量文档 prof.infra.smallstep.com《Production considerations when running a certificate authority server》,查询日期 2026-10-31)。

五、快速开始(最小可用示例)

以下流程摘自官方文档(smallstep.com/docs/step-ca,查询日期 2026-10-31),本地逐步实测见本专栏《step-ca 0.30.2 Docker Compose 部署指南》:

# 1. 安装 step CLI(Linux amd64 示例)
wget https://dl.smallstep.com/cli/docs-ca-install/latest/linux-amd64/step.tar.gz
tar -zxvf step.tar.gz && mv step /usr/local/bin/

# 2. 初始化 PKI(交互式,生成 root/intermediate/ca.json)
step ca init

# 3. 启动 CA 服务
step-ca $(step path)/config/ca.json

# 4. 客户端签发第一张证书(JWK provisioner,需输入 CA 密码)
step ca certificate foo.internal foo.crt foo.key --ca-url https://ca.internal:9000 --root root_ca.crt

# 5. 检查健康与证书内容
step ca health --ca-url https://ca.internal:9000 --root root_ca.crt
step certificate inspect foo.crt

💡 说明:step ca init 是交互式向导,依次询问部署类型(Standalone/Linking)、PKI 名称、客户端可达的 DNS 名称、监听地址与首个 provisioner 名称;完整交互实录与逐行回显见本专栏部署篇。

六、适用场景与限制

6.1 适用场景

  1. 内网 TLS everywhere:内部 API、数据库连接、管理后台全部上 mTLS,证书由 ACME 客户端自动续期;
  2. SSH 集中认证:以 OIDC SSO 换发短期 SSH 用户证书,替代分散的 authorized_keys,人员离职即失效;
  3. Kubernetes 内部签发:cert-manager ACME issuer 对接 step-ca,为集群内 workload 签发证书;
  4. 网络设备纳管:SCEP provisioner 承接路由器/交换机等不支持 ACME 的传统设备;
  5. 公网 CA 前置演练:ACME 流程与 Let's Encrypt 一致,可先在私有环境验证自动化管线再切换公网。

6.2 限制

  • 无 Web UI:开源版纯 CLI/API 操作,可视化需商业版;
  • 高可用需自行设计:单进程 + 本地 badger 存储,多副本需共享数据目录或前置负载均衡,官方生产考量文档建议将根 CA 离线、中间 CA 在线并做好备份(来源:官方生产考量文档,查询日期 2026-10-31);
  • 不发公网可信证书:根证书必须分发并信任到每台客户端,这是所有私有 CA 的共同约束;
  • 版本 0.x:主版本未到 1.0,升级需关注 Release Notes 中的配置变更。

七、同类选型对比

7.1 对比总表

维度step-ca 0.30.2Vault PKI(HashiCorp)OpenBaoeasy-rsa 3.xcfssl
定位专用私有 CA + ACME 服务器秘密管理平台中的 PKI 引擎Vault 开源分支(Linux Foundation)OpenVPN 配套脚本式 CACF 的 PKI 工具库 + CLI
许可Apache-2.0BUSL-1.1(源码可用,非 OSI 开源)MPL-2.0GPL-2.0(OpenVPN 项目)BSD-2
语言GoGoGoBash/Shell(封装 OpenSSL)Go
ACME 支持内置一等公民原生不支持(需社区插件/方案)原生不支持(同 Vault 机制)无无成熟支持
SSH CA内置(用户+主机证书)SSH secrets engine 支持SSH secrets engine 支持无无
自动续期step CLI 原生(daemon 模式)Vault Agent 模板机制同 Vault Agent 机制无无
部署复杂度单二进制,step ca init 即用服务端+存储+unseal 流程同 Vault极低(脚本包)单二进制但需手工编排
Web UI无(商业版提供)有有无无
证书 APIJSON/HTTPS CA API + ACME全功能 REST API全功能 REST API无REST API
SSO/身份集成OIDC provisioner 原生生态完善(LDAP/JWT/OIDC)生态完善无无
社区活跃度约 8k+ stars,2026-10 仍在提交(GStars.dev,2026-10-31 查询)高但许可受限快速增长的开源分支中等(跟随 OpenVPN)维护放缓

来源:各项目官方文档与 GStars.dev、linuxvox.com《Top Certificate Authority Software for Linux》、khimananda.com 对比表、pistack.xyz《Self-Hosted PKI Guide 2026》,查询日期 2026-10-31;许可信息以各仓库 LICENSE 为准。

7.2 逐项分析

step-ca vs Vault PKI / OpenBao:Vault 的 PKI 引擎强在"证书只是平台能力之一"——它同时管数据库凭据、云密钥、加密即服务,且 RBAC/审计/策略体系成熟;但 Vault 自 1.12 起采用 BUSL-1.1 许可,产品化使用需商业授权评估,且部署运维重(unseal、存储后端、集群)。OpenBao 是 Vault 的 MPL-2.0 开源分支,能力同源,适合规避 BUSL 风险的团队。step-ca 则是"把一件事做到极致":ACME 原生、SSH CA 原生、单二进制、step ca init 五分钟可用,部署复杂度与学习曲线显著低于 Vault/OpenBao(对比依据:khimananda.com 2026 指南对比表、HashiCorp Developer PKI 教程,查询日期 2026-10-31;OpenBao 详情见站内《OpenBao 介绍与选型指南》)。

step-ca vs easy-rsa:easy-rsa 是 OpenVPN 生态的经典 CA 脚本包,胜在极简与零依赖;但它没有服务进程、没有 API、没有自动续期,密钥默认在"CA 机"上集中生成后分发,长期运营大型 PKI 会非常吃力。step-ca 以客户端本地生成密钥 + API 签发的模式解决了这两点(对比依据:linuxvox.com CA 工具评测、官方设计文档,查询日期 2026-10-31;easy-rsa 详情见站内《easy-rsa 3.2.7 介绍与选型指南》)。

step-ca vs cfssl:cfssl(Cloudflare)是 Go 生态的 PKI 工具库与 CLI,适合"把签发能力嵌进自家平台"的二次开发场景;但社区维护放缓、无 ACME、无 SSH CA,自动化需自行封装。step-ca 开箱即得全部自动化能力(对比依据:Vault 官方教程对 cfssl 的定位描述、linuxvox.com 评测,查询日期 2026-10-31)。

7.3 选型建议

  • 需要 ACME 自动签发、SSH 证书、轻量部署 → 首选 step-ca;
  • 已部署 Vault/OpenBao 且只需少量内部证书 → 直接用其 PKI 引擎,不引入新组件;
  • 仅 OpenVPN 场景的几张证书 → easy-rsa 足矣;
  • 要把签发能力嵌入自研平台做二次开发 → cfssl 或直接复用 step-ca 的 API;
  • pistack.xyz 2026 年自托管指南的评价可作佐证:"Choose Step CA if: You run internal services that need TLS, want SSH certificates, require short-lived certificates, or need enterprise-grade PKI with SCEP and webhook support. It is the gold standard for self-hosted certificate authorities."(查询日期 2026-10-31)。

八、参考链接

  1. Smallstep 官方文档:step-ca Certificate Authority Overview — https://smallstep.com/docs/step-ca/ (查询日期 2026-10-31)
  2. Smallstep 开源项目主页 — https://smallstep.com/open-source/ (查询日期 2026-10-31)
  3. GitHub 仓库 smallstep/certificates — https://github.com/smallstep/certificates (查询日期 2026-10-31)
  4. Smallstep 设计与架构文档 — https://prof.infra.smallstep.com/docs/design-document (查询日期 2026-10-31)
  5. Smallstep 生产环境考量文档 — https://prof.infra.smallstep.com/docs/step-ca/certificate-authority-server-production (查询日期 2026-10-31)
  6. 官方配置文档 — https://smallstep.com/docs/step-ca/configuration/ (查询日期 2026-10-31)
  7. GStars.dev 仓库活跃度洞察 — https://www.gstars.dev/repo/smallstep/certificates (查询日期 2026-10-31)
  8. HashiCorp Vault PKI 引擎教程 — https://developer.hashicorp.com/vault/tutorials/pki/pki-engine (查询日期 2026-10-31)
  9. Vault PKI considerations 官方文档 — https://developer.hashicorp.com/vault/docs/secrets/pki/considerations (查询日期 2026-10-31)
  10. linuxvox.com《Top Certificate Authority Software for Linux》 — https://linuxvox.com/blog/what-certificate-authority-software-is-available/ (查询日期 2026-10-31)
  11. pistack.xyz《Complete Guide to Self-Hosted Certificate Management and PKI 2026》 — https://www.pistack.xyz/posts/self-hosted-pki-certificate-management-step-ca-caddy-nginx-proxy-manager-2026/ (查询日期 2026-10-31)
  12. khimananda.com《Run an Internal Certificate Authority with step-ca (2026 Guide)》 — https://khimananda.com/blog/run-an-internal-certificate-authority-with-step-ca (查询日期 2026-10-31)
  13. 站内《OpenBao 介绍与选型指南》 — https://www.quzuo.net/document/DzUGmNoV76cy
  14. 站内《easy-rsa 3.2.7 介绍与选型指南》 — https://www.quzuo.net/document/IPHRnAw0xBaZ