step-ca 证书生成完整步骤指南

  • 时间:2025-11-06 18:54 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要: step-ca 是 Smallstep 推出的开源证书颁发机构(CA),通过 step CLI 实现自动化证书生命周期管理。证书生成的核心是客户端-服务器模型:CA 服务器处理签名,客户端生成密钥并请求证书。整个过程强调零信任、短寿命证书(默认24h)和provisioner 授权(如 JWK、OIDC、ACME)。 前提条件: 安装 step CLI(支持 macOS/Linux/

step-ca 是 Smallstep 推出的开源证书颁发机构(CA),通过 step CLI 实现自动化证书生命周期管理。证书生成的核心是客户端-服务器模型:CA 服务器处理签名,客户端生成密钥并请求证书。整个过程强调零信任短寿命证书(默认24h)和provisioner 授权(如 JWK、OIDC、ACME)。

前提条件

安装 step CLI(支持 macOS/Linux/Windows)。 网络连通(客户端到 CA 服务器)。

以下是从零到生成第一张证书6 个核心步骤,每个步骤附带命令作用原理示例

1. 初始化 CA(step ca init)

命令

text



step ca init 
  --name "My CA" 
  --dns localhost 
  --address :443 
  --provisioner admin
作用:创建根 CA、中间 CA、私钥、配置文件(config/ca.json),建立 PKI 信任链。 原理
组件 生成方式 作用
根 CA 证书/私钥 自签名(EC P-256,默认) 信任锚点,不可变,离线存储。
中间 CA 证书/私钥 根 CA 签名 实际签名端实体证书,易轮换保护根安全。
JWK Provisioner 随机密钥对 授权客户端请求证书,支持 token 认证。
CA 指纹 SHA256 哈希 客户端验证 CA 身份,防 MITM 攻击。
输出:~/.step/ca/ 目录,包含所有文件。安全提示:备份私钥,设置强密码。

2. 启动 CA 服务器(step-ca)

命令

text


step-ca $(step path)/config/ca.json
作用:运行 HTTPS 服务器(默认 :443),暴露 /sign 等 API 端点。 原理RA/CA 分离架构,服务器验证 provisioner、策略(TTL、SAN),签名 CSR。支持 HA 集群、ACME 协议。日志显示指纹,便于客户端引导。 示例:访问 https://localhost/sign 测试(需 --insecure)。

3. 客户端引导(step ca bootstrap)

命令

text



step ca bootstrap 
  --ca-url https://ca.example.com 
  --fingerprint <CA-FP>
作用:配置客户端 ~/.step/,信任根 CA,准备后续操作。 原理指纹验证确保 CA 未被篡改。下载根证书到本地,启用 step 与 CA 通信。零配置信任:无需手动导入 cert。 获取指纹:从服务器日志 Server is listening on :443, fingerprint: <FP>。

4. 生成授权 Token(step ca token)

命令

text


step ca token myapp.example.com
作用:为特定 subject 生成一次性 JWT token,用于认证证书请求。 原理JWK Provisioner 签名 token,包含 claims(如 subject、SAN、TTL)。CA 验证 token 有效性、过期、加密强度。防重放:单次使用,支持 OIDC 等高级 auth。 可选:直接用 --san 等 flags 无需 token(默认 provisioner)。

5. 生成私钥 & CSR(step ca certificate 内建)

命令(核心):

text



TOKEN=$(step ca token myapp.example.com)
step ca certificate 
  myapp.example.com 
  myapp.crt 
  myapp.key 
  --token $TOKEN 
  --san myapp.example.com 
  --not-after 24h
作用:一键输出证书+私钥(PEM 格式)。 原理(内部 3 子步): 私钥生成:EC/RSA/Ed25519(--kty),默认加密(--password-file)。 CSR 构建:嵌入 subject、SAN、扩展(--set email=foo@bar.com)。 提交签名:POST CSR 到 CA /sign,CA 验证 token → 签名 → 返回 cert。 高级:ACME(--acme)、离线(--offline:本地签名,无网络)。

6. 验证 & 使用证书(step certificate inspect)

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部