本文最后更新于 2026年5月11日。
以下是调整 Smallstep 证书最大有效期的专业方案,分为 私有CA 和 公共CA 两种场景:
🔧 场景1:私有CA(完全控制)
方法1:修改CA策略(推荐)
bash复制代码
# 1. 生成CA时直接设置最大有效期(需重新初始化CA) step ca init --name="My LongCA" --provisioner=admin \ --dns=ca.example.com \ --address=:443 \ --provisioner-password-file=/path/to/password \ --with-ca-duration="8760h" \ # CA证书自身有效期 --with-ca-max-duration="8760h" # 可签发的最大证书有效期 # 2. 或修改已有CA的配置文件(需重启CA服务) cat > ca-config.json << EOF { "authority": { "provisioners": [{ "type": "JWK", "name": "admin", "key": { ... }, "encryptedKey": "...", "claims": { "maxTLSCertDuration": "8760h", // 最大证书有效期 "defaultTLSCertDuration": "24h" // 默认有效期 } }] } } EOF
方法2:签发时临时覆盖
bash复制代码
# 使用--not-after参数强制覆盖(需管理员权限) step ca certificate my.example.com \ --ca-url https://ca.example.com \ --root /path/to/ca.crt \ --not-after="8760h" # 覆盖默认策略
方法3:更新现有CA策略
bash复制代码
# 通过step CLI动态更新 step ca provisioner update admin \ --x509-max-duration=8760h \ --x509-default-duration=24h
⚠️ 关键限制:
- 所有证书有效期不得超过 CA证书自身的有效期
- 修改后需运行
step-ca ca-config.json重启服务