当前位置: 首页 > news >正文

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

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 子步):
    1. 私钥生成:EC/RSA/Ed25519(--kty),默认加密(--password-file)。
    2. CSR 构建:嵌入 subject、SAN、扩展(--set email=foo@bar.com)。
    3. 提交签名:POST CSR 到 CA /sign,CA 验证 token → 签名 → 返回 cert。
  • 高级:ACME(--acme)、离线(--offline:本地签名,无网络)。

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

http://www.dtcms.com/a/553043.html

相关文章:

  • 从字节码生成看 Lua VM 前端与后端协同:编译器与执行器衔接逻辑
  • SQLite3语句以及FMDB数据存储初步学习
  • 抽奖网站怎么制作长沙人力资源招聘网
  • IntelliJ IDEA 远程断点调试完全指南
  • uniapp使用sqlite模块
  • Lua--数据文件和持久性
  • Spark SQL 解锁电商数据密码:窗口函数大显身手
  • 用R语言生成指定品种与对照的一元回归直线(含置信区间)
  • NVR(网络视频录像机)和视频网关的工作方式
  • 如何架设网站服务器网络搭建百度百科
  • opencv 学习: 04 通过ROI处理图片局部数据,以添加水印为例
  • 中小企业网站模板诚信网站平台建设方案
  • chatgpt崩溃了,gpt怎么了
  • [MySQL] 页与索引
  • 2025年AI生成PPT工具评测:以“全链路一体化服务能力”为尺,ChatPPT再登顶
  • 天津特定网站建设推广搜素引擎优化
  • 直播美颜sdk特效功能架构全解析:从图像处理到AI渲染的技术演进
  • 2025强网杯web wp
  • 超融合架构下,如何智能调度让每台虚拟机都“跑得更快”?
  • 【Web应用安全】SQLmap实战DVWA SQL注入(从环境搭建到爆库,完整步骤+命令解读)
  • 从零打造 Telegram 中文生态:界面汉化 + 中文Bot + @letstgbot 搜索引擎整合实战
  • QT 给Qimage数据赋值,显示异常,像素对齐的坑
  • wordpress 整站下载万江做网站
  • 谈谈设计和建设网站体会摄影网站建设的功能有哪些
  • ESP 8684模组上的IO6引脚相关问题处理办法
  • 李宏毅机器学习笔记37
  • 大模型-Qwen-Agent框架:系列Agent功能介绍 (1)
  • 18. React的受控和非受控组件
  • cocos 在animation播放后调整widget右对齐能避免动画position影响对齐
  • RAG_混合检索