自签名证书生成
本地开发要跑 HTTPS、内网系统没有公网域名、想测测证书相关的逻辑——这些场景都用自签名证书。浏览器默认不信任它,会弹一次警告;想彻底消掉警告就选下面的「私有 CA」模式,把根证书导进系统信任库,之后签多少张都不弹。证书和私钥都在你的浏览器里生成,不经过服务器。
第一行会同时作为证书的 CN。浏览器只认 SAN,用什么地址访问就要把什么写进来——
localhost 和 127.0.0.1 是两个名字,都要写。
自己用随便填。注意 macOS / iOS 对服务器证书有 825 天上限,超了会直接判为不可信;根证书不受这个限制。
导进系统后在证书列表里显示的名字,起个认得出来的。
怎么让浏览器不弹警告
- macOS
- 双击
ca.crt导入「钥匙串访问 → 系统」,然后双击该证书,把「信任 → 使用此证书时」改成「始终信任」——只导入不改信任是没用的。命令行:sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt - Windows
- 双击
ca.crt→安装证书 →选「本地计算机」→「将所有证书放入下列存储」→浏览选受信任的根证书颁发机构。Edge / Chrome 用系统信任库,装完重启浏览器即可。 - Firefox
- Firefox 有自己的信任库,不吃系统的。设置 →隐私与安全 →证书 →查看证书 →证书颁发机构 →导入,勾「信任由此 CA 标识的网站」。
- Linux
- Debian/Ubuntu:
sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates;RHEL 系:放/etc/pki/ca-trust/source/anchors/再update-ca-trust。 - Android / iOS
- 都能导入,但 Android 7 以后 App 默认不信任用户安装的 CA,只有浏览器认;要让 App 也认得改 App 的 network-security-config。iOS 导入后还要去「设置 →通用 →关于本机 →证书信任设置」里手动打开开关。
- nginx 怎么配
ssl_certificate /path/server.crt;与ssl_certificate_key /path/server.key;,私钥权限设成 600。完整配置可以用 HTTPS 配置生成 生成。- 安全提醒
- 私有 CA 的根证书一旦装进系统,持有 ca.key 的人就能为任意域名签出你机器会信任的证书。只在自己的开发机上装,ca.key 别传到任何地方,别在生产环境用这套。不用了记得把根证书从信任库里删掉。