首页>本地证书制作教程:从零跑通离线签发的完整指南

本地证书制作教程:从零跑通离线签发的完整指南

本地证书制作教程:从零跑通离线签发的完整指南

很多人以为做证书必须联网对接CA机构——其实不一定。你在自己电脑上就能完成一套完整的本地证书制作教程流程,签发、验签、吊销全都能离线搞定。

说白了,OpenSSL 装好之后,你手里就相当于有了一台微型CA服务器。

没有联网,证书为什么还能生效?

证书的本质不是“在线验证”,而是一串被私钥签名过的数据。浏览器或系统校验证书时,看的是证书链里那根信任锚——也就是根证书——有没有被预先放进信任库。

所以你只要自己生成根证书,再把它导入系统的受信任根证书颁发机构,后续用它签出来的叶子证书就全部有效。整个过程不碰网络,也不依赖任何第三方。

坦白讲,很多企业内网系统、测试环境、IoT设备固件签名,用的就是这套离线逻辑。我在2023年给某智能家居厂商做本地签发方案时,他们产线上每台网关烧录的证书全部来自一台不联网的工控机,效率比云端签发高得多。

本地证书制作教程里的3个关键坑

第一,根证书的私钥保护。根私钥一旦泄露,别人就能冒充你签任意域名。建议生成时直接加 aes256 加密,或者干脆把根私钥放在一个独立的加密分区里。

第二,扩展字段别乱填。很多教程只教你跑命令,不告诉你 basicConstraints=CA:TRUE 和 keyUsage=keyCertSign 这两个必须写对。漏了前者,你的根证书签出来的中间证书会被浏览器直接拒绝。

第三,序列号要随机化。固定序列号在离线环境里容易被预测,攻击者可以伪造证书。用 -set_serial 0x$(openssl rand -hex 16) 这种写法就稳妥多了。

说实话,踩过这3个坑的人不在少数。不信你去搜“证书无效”“unknown ca”,一半以上都是扩展字段或者信任链没配好。

一套能直接抄的离线签发流程

先建目录结构,别把根证书和业务证书混在一起。我习惯用 /root/ca/root 和 /root/ca/intermediate 分开管理。

然后生成根密钥:

  • openssl genrsa -aes256 -out root.key 4096
  • openssl req -new -x509 -days 7300 -key root.key -out root.crt

接下来做中间CA。这一步很多人会跳过,直接用根签叶子——能跑,但安全边界太差。中间CA的好处是根私钥可以完全离线封存,日常签发都走中间层。

生成中间CA的CSR,然后用根证书签它,注意给中间CA加上 pathlen:0 限制,防止它再去签下级CA。

最后签业务证书。CSR里的 subjectAltName 一定要写上IP或域名,现在Chrome 120以上版本不认CN字段了,只认SAN。

签完后用 openssl verify -CAfile chain.pem server.crt 验证一下,输出OK就说明链路通了。再把根证书双击导入系统,或者执行 certutil -addstore root root.crt(Windows)就行。

想加深理解的话,可以看看数字证书验证机制的底层拆解,里面把信任链的每一步都掰开讲了。

离线证书的吊销怎么做?

没有网络就没有CRL分发和OCSP响应,但吊销需求照样存在。

最简单的方式是本地维护一个 index.txt,每签一张证书就记录状态。吊销时用 openssl ca -revoke 更新状态,再生成CRL文件。验证端导入这个CRL,或者干脆用短有效期证书——比如7天——靠过期自然失效。

简单来讲,离线环境别指望实时吊销,短周期轮换才是正解。我在实际项目里见过有人用15分钟有效期的证书做设备临时授权,配合本地时钟同步,效果比CRL还干净。

如果对离线证书吊销方案感兴趣,可以进一步了解CRL与短效证书的混合策略。

这套本地证书制作教程走下来,你会发现难点根本不在命令本身,而在你对证书字段和信任模型的理解。搞懂了,离线签发比调用云API还顺手。

电话:19873426242

地址:长春图文路777号

微信:zs988a

电话咨询
微信号(点击复制)
zs988a
微信号已复制,打开微信粘贴添加