跳到正文

CSR 证书请求生成

CSR Generator

按主体字段和 SAN 条目生成证书签名请求以及配套的私钥。

在你的浏览器里生成密钥对和 PKCS#10 证书签名请求。私钥由这个标签页里的 WebCrypto 生成,从不发送到任何地方——这是唯一可接受的安排,因为一个看得到你私钥的 CSR 生成器,就是一个你没有选择的证书颁发机构。

🔒 完全在你的浏览器里运行csrtlscertificategenerator

密钥对由浏览器里的 WebCrypto 生成,私钥不会离开这个标签页。什么都不会发给服务器。

主域名。证书颁发机构实际是按下面的 SAN 列表签发的。

非 ASCII 的名称也可以,会编码成 UTF8String。

ISO 3166 的两个字母。

用换行或逗号分隔。域名、通配符、IP 地址、电子邮件地址。把证书需要覆盖的名字都写上。

怎么用

  1. 填写主体

    CN 是主域名;O、OU、L、ST 和 C 是组织字段,公共 CA 签发域名验证证书时基本忽略它们。中文组织名没问题——它们以 UTF8String 编码。

  2. 把每一个名字都列进 SAN

    这才是要紧的部分。浏览器完全忽略 CN,只读 SAN 列表(RFC 6125 §6.4.4),所以证书必须覆盖的每一个主机名都放在这里——顶点、www、通配符、IP 地址。

  3. 选密钥类型

    RSA 2048 兼容性最好,RSA 3072 是 2030 年以后的推荐强度,EC P-256 密钥更短、握手更快,当前的环境都支持。

  4. 离开之前保存私钥

    它只存在于这个标签页里。下载它,放到服务器上,并让文件除此之外谁都读不了——没有它,CSR 本身毫无用处。

常见问题

私钥真的留在这里吗?

是。WebCrypto 在标签页里生成密钥对,没有任何请求会把它带出去。下载之前关掉标签页它就没了——这和它安全的原因是同一个性质。

CN 填了,CA 却拒绝了请求

检查 SAN 列表。现在大多数 CA 要求每个名字都在里面,只有 CN 的请求被当作什么名字都没有。让"把 CN 也加入 SAN 列表"保持打开几乎总是对的。

能用它申请通配符证书吗?

能——把 *.example.com 放进 SAN 列表。注意它只覆盖一级:*.example.com 匹配 www.example.com,不匹配 a.b.example.com,也不匹配 example.com 本身,所以后者要单独列出。

为什么还给了一条 openssl 命令?

让你能交叉核对这里的结果,或者改在服务器上生成同样的请求。验证命令——openssl req -in server.csr -noout -text -verify——读回的正是你下载的文件里的内容。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。