SSL 证书生成器

身份

浏览器默认不信任自签名证书:仅用于本地开发、测试或私有网络。

直接在浏览器中为本地开发或内部测试生成自签名证书。你可以选择 RSA 密钥长度(2048、3072 或 4096 位)、Common Name、Subject Alternative Names、有效期以及组织基本信息。证书及其私钥在你的浏览器中生成,绝不会发送到我们的服务器;你可将两者下载为可直接用于 Nginx 或 Apache 的 PEM 文件。

证书生成的工作原理

  1. 1

    选择 RSA 密钥长度

    大多数测试用 2048 位即可;3072 或 4096 会以速度为代价换取更大的密钥。

  2. 2

    输入主题和 SAN

    Common Name 以及证书应覆盖的每个主机名或 IP(现代浏览器忽略 CN,改用 SAN)。

  3. 3

    在浏览器中生成

    生成一张自签名证书,并用对应的私钥签名,全部在你的浏览器中本地完成。

  4. 4

    下载结果

    PEM 编码的证书(`cert.pem`)和 PEM 格式的私钥(`key.pem`),随时可以安装。

一切都在你的浏览器中进行

此生成器完全在你的浏览器中运行。RSA 密钥对由 JavaScript 加密库在本地生成,证书在你的设备上签名,私钥和证书都不会上传到我们的服务器。即便如此,也请把私钥当作机密:任何持有它的人都能冒充该证书。

自签名意味着什么

你既是颁发者也是主题:证书由其自身的私钥签名,因此没有任何公共证书颁发机构(CA)为它背书。这正是浏览器显示警告的原因。它适合测试、本地开发(localhostdev.local),以及你能把证书分发给需要信任它的客户端的内部服务器。

如果你需要一张公共互联网所信任的证书,此工具并非合适的步骤:你需要一张由 CA 签名的证书(例如 Let’s Encrypt 或付费 CA),这需要一份证书签名请求(CSR)和域名验证,而这款浏览器工具并不执行它们。

证书中包含的内容

字段 说明
主题(CN、O、C) Common Name、组织、国家/地区
Subject Alternative Names 覆盖的每个域名或 IP(至关重要!)
公钥 RSA,由生成的私钥派生
颁发者 与主题相同,因为是自签名
有效期 Not Before / Not After(你设定的有效天数)
Key Usage digitalSignature、keyEncipherment
Extended Key Usage serverAuth、clientAuth
Basic Constraints CA:FALSE(叶子证书,而非 CA)

输出文件

  • key.pem,私钥(请保护它,权限 0600)
  • cert.pem,自签名证书(公开,可分发)

用于 Nginx

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;
}

用于 Apache 2.4+

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/cert.pem
    SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>

在你自己的机器上信任该证书

要在你所掌控的机器上消除浏览器警告,请把 cert.pem 导入该系统或浏览器的信任存储。只对你自己生成的证书、在你拥有的设备上这样做。像 mkcert 这样的工具会为多个服务自动搭建本地 CA;而此生成器每次只生成一张自签名证书。

自签名证书不适合的用途

  • 公开网站。 用户会看到警告,许多人会离开。
  • 第三方 API 集成。 大多数客户端会拒绝未知的颁发者。
  • 生产环境。 绝对不行。对开放互联网上的任何东西,请使用 Let’s Encrypt(免费)或付费 CA。

常见问题

不会。密钥对和证书都在你的浏览器中生成并留在你的设备上;不会上传任何内容。即便如此,也请对下载的 key.pem 文件保密,因为任何持有它的人都能冒充该证书。

如果会有第三方连接,则不可以。浏览器会显示醒目的警告。请使用由免费(Let’s Encrypt、ZeroSSL)或付费 CA 签名的证书。自签名适用于你掌控两端的内部网络中的机器对机器通信。

过去 CN 存放主域名。现代浏览器在主机验证时忽略 CN,只使用 SAN。请始终把每个主机名都写入 SAN;CN 只设为主域名,仅作可读的标识。

可以,在 SAN 中填入 *.example.com。它覆盖一级子域名。若需多级,请添加多个通配符(*.example.com*.dev.example.com)。

相关工具