# CSR 在线生成：浏览器本地生成 CSR 和私钥

> 在浏览器里生成 CSR 和私钥：RSA 2048/3072/4096 或 ECDSA P-256/P-384，支持多个 SAN，PEM 下载，附等价 OpenSSL 命令。

Source: https://ssl.sh/zh/tools/csr-generator/
Last updated: 2026-11-10

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

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 命令，例如：

```bash
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](https://ssl.sh/zh/glossary/csr/) 包含主体名称、公钥，以及请求添加的扩展（这里是 SAN 列表），整体用私钥签名，CA 据此确认你持有私钥。RSA 用 SHA-256 签名，P-256 用 ECDSA SHA-256，P-384 用 ECDSA SHA-384。生成后可以用 [CSR 解析工具](https://ssl.sh/zh/tools/csr-decoder/)检查。

## 注意事项

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


## FAQ

**选 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。
