生成

CSR 在线生成器

用 RSA 或 ECDSA 生成证书签名请求(CSR)和私钥。私钥在你的浏览器里生成,不会上传。

浏览器本地运行 私钥在你的浏览器里(WebCrypto)生成和处理,不会离开你的设备,也不会上传到 ssl.sh。

一般填主域名,如 example.com 或 *.example.com。
一行一个域名或 IP,CN 会自动加入。中文域名会自动转成 punycode。
组织信息(可选)
2022 年 9 月起公开 CA 不再在证书里写 OU。
两位字母代码,如 CN、US。

DV 证书只验证域名,CA 会忽略这些字段;OV/EV 证书核实后才会写进证书。

最后核实

CSR 生成器用来创建证书签名请求和对应的私钥。把域名填进通用名称(CN),补充其他名字,选好密钥类型,点 生成 CSR 和私钥。把 CSR 提交给证书颁发机构(或在阿里云、腾讯云等平台申请证书时选择“自己上传 CSR”),私钥保存在你的服务器上。私钥在浏览器里生成,不会上传。

怎么用

  1. 通用名称:主域名,比如 example.com 或 *.example.com。
  2. 备用名称(SAN):证书还要覆盖的其他名字,一行一个,比如 www.example.com。可以填 IP;中文域名会自动转成 punycode。
  3. 密钥类型:一般网站选 ECDSA P-256,追求兼容性选 RSA 2048,有合规要求再选 RSA 3072/4096 或 P-384。
  4. 组织信息(可选):只有 OV/EV 证书需要。
  5. 点 生成 CSR 和私钥,把两个文件都下载下来,.key 文件务必保密。

页面上还会给出等价的 OpenSSL 命令,例如:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes \
  -keyout example.com.key -out example.com.csr \
  -subj '/CN=example.com' -addext 'subjectAltName=DNS:example.com,DNS:www.example.com'

CSR 里有什么

CSR 包含主体名称、公钥,以及请求添加的扩展(这里是 SAN 列表),整体用私钥签名,CA 据此确认你持有私钥。RSA 用 SHA-256 签名,P-256 用 ECDSA SHA-256,P-384 用 ECDSA SHA-384。生成后可以用 CSR 解析工具检查。

注意事项

  • 马上保存私钥。 它只存在于当前浏览器标签页,关掉就找不回来,证书签下来也用不了。
  • 私钥是不加密的 PKCS #8(-----BEGIN PRIVATE KEY-----),Nginx、Apache、宝塔“密钥(KEY)”框和各云控制台都能直接用。服务器上用 chmod 600 保护好文件。
  • 2022 年 9 月起公开 CA 不再在证书里写 OU,除非自建 CA 需要,否则留空。
  • 证书签发后,用私钥匹配工具确认它和私钥是一对,否则会出现 nginx key values mismatch 之类的错误。

常见问题

选 RSA 还是 ECDSA?

ECDSA P-256 密钥更小、握手更快,当前所有浏览器和服务器都支持。需要兼容很老的客户端、硬件设备,或者 CA、平台明确要求 RSA 时,选 RSA 2048。

在网页上生成私钥安全吗?

这里的私钥由你浏览器自带的 WebCrypto 生成,只存在于当前页面,不会发给 ssl.sh。如果公司规定私钥必须在服务器上生成,就用结果旁边给出的 OpenSSL 命令在服务器上执行。

组织、城市、国家这些要填吗?

DV 证书不用填,CA 只验证域名,会忽略这些字段。OV、EV 证书要按 CA 的要求填写真实的单位信息,CA 核实后才会写进证书。

怎么申请通配符证书?

CN 或 SAN 填 *.example.com。通配符只覆盖一级子域名,如果还需要裸域名 example.com,要单独加一个 SAN。

资料来源

  1. RFC 2986: PKCS #10
  2. RFC 5958: PKCS #8
  3. OpenSSL req 命令
  4. CA/Browser Forum Baseline Requirements