在浏览器中使用 Web Crypto 生成自签名 X.509 证书及匹配的公钥和私钥。该证书由自身的私钥签署,而非由公共证书颁发机构(CA)签署,因此非常适合本地 TLS、实验环境和开发用途——不适用于公开网络上的公共信任场景。
工作原理
您选择密钥长度、有效天数、签名算法以及可选的主题属性(通用名称、组织及类似的 Distinguished Name 字段)。工具会创建一对非对称密钥,用这些属性和有效期窗口构建证书,然后用私钥对其签名。输出通常是 PEM 格式的证书、公钥和私钥材料,可安装到本地服务器、反向代理或信任库中用于测试。
何时使用
- 在
localhost或内部预发布主机上启用 HTTPS,无需购买 CA 证书 - 对 TLS 客户端、双向 TLS 配置或证书解析代码进行冒烟测试
- 在无需等待 ACME 签发的情况下,讲解证书、密钥和有效期之间的关系
局限性
浏览器和操作系统默认不信任自签名证书;除非证书被显式标记为受信任,用户会看到警告。它们不能替代 Let's Encrypt 或商业 CA 证书用于生产环境的公开网站。密钥材料永远不会离开您的浏览器会话,但任何获得私钥的人都可以冒充证书主体——请谨慎保存和删除密钥。算法和密钥长度的选择必须与您的服务器技术栈所接受的一致。
示例
一个有效期 365 天、通用名称为 dev.local 的 2048 位 RSA 密钥,会生成以 -----BEGIN CERTIFICATE----- 开头的 PEM 证书、一个 PEM 私钥和一个公钥。将该私钥和证书导入本地 nginx 或 Node HTTPS 服务器可启用加密连接,但在证书被添加到本机信任库之前,仍会显示不受信任的颁发者警告。