自签证书的适用边界
自签证书由自己签发自己,链上不存在公共信任锚,因此浏览器会直接报不受信任。它适合内网服务、开发调试、设备管理界面,以及私有 CA 体系下的双向认证。面向公众的站点与开放 API 应当使用受信 CA 签发的证书,否则用户会看到安全警告,大量客户端还会直接拒绝连接。
基本信息
| 生成 | openssl req -x509 -newkey rsa:2048 -nodes -days 365 |
|---|---|
| 信任方式 | 导入客户端信任库,或按系统策略统一放行 |
| 适用范围 | 内网系统、IoT 设备、开发测试、私有 CA 的双向认证 |
| 不适用 | 面向公众的站点与开放 API |
| 必备项 | 必须配置 SAN,不能只写 CN |
| 生命周期 | 到期同样需要轮换与重新分发信任 |
典型使用场景
- 内网管理界面:为内部系统提供加密通道,由客户端统一导入信任
- 开发与测试:本地搭起 HTTPS 环境,不必改动业务代码
- 设备管理:IoT 设备自带证书,按设备指纹分发信任
- 私有 PKI 建设:先建自签根证书,再为各服务签发体系内证书
- 临时验证:确认配置生效后,再替换为受信证书上线
生成自签证书(含 SAN)
生成自签证书(含 SAN)
openssl req -x509 -newkey rsa:2048 -nodes -days 365 -keyout tls.key -out tls.crt -subj "/CN=internal.example.com" -addext "subjectAltName=DNS:internal.example.com,IP:10.0.0.10"
# 生成后确认 SAN 与指纹,方便分发时核对
openssl x509 -in tls.crt -noout -ext subjectAltName -fingerprint -sha256使用边界速查
| 场景 | 可否用自签 | 说明 |
|---|---|---|
| 内网管理后台 | 可以 | 客户端需导入信任,建议用私有 CA 统一签发 |
| 面向公众的站点 | 不可以 | 终端用户会看到警告并可能直接离开 |
| 开放 API | 不可以 | 调用方无法预先信任你的自签根 |
| IoT 设备 | 可以 | 需解决轮换与指纹分发的管理问题 |
自签证书的轮换与指纹分发要纳入管理:大量设备各自信任不同自签证书,会让运维复杂度快速上升。
逐张自签不如自建私有 CA:用一套根证书签发所有内网服务证书,客户端只需信任一次,续期与替换时也不必逐台重新导入。
自签证书同样必须配 SAN:只写 CN 的证书在现代客户端上会被判为名称不匹配,比预期更早触发校验失败。