跳转到内容

CSR 生成

CSR(Certificate Signing Request,证书签名请求)是申请 SSL 证书时必需的文件,包含您的域名、组织信息和公钥。anssl 提供简单易用的 CSR 生成工具,帮助您快速生成符合标准的 CSR 文件。

CSR 是一个包含以下信息的文本文件:

  • 域名信息:要保护的域名或通配符域名
  • 组织信息:公司名称、部门、所在地等
  • 公钥:用于加密的公钥信息
  • 签名算法:使用的加密算法(RSA/ECC)

当您向 CA 机构申请证书时,需要提交 CSR 文件。CA 机构会验证信息后,签发对应的 SSL 证书。

  1. 访问工具页面

    访问 CSR 生成工具 页面

  2. 填写域名信息

    • 通用名称(CN):主域名,如 example.com*.example.com
    • 备用名称(SAN):可选,添加额外的域名
  3. 填写组织信息

    • 组织名称(O):公司或组织的法定名称
    • 组织单位(OU):部门名称(可选)
    • 国家(C):两位国家代码,如 CN、US
    • 省份(ST):省份或州
    • 城市(L):城市名称
  4. 选择签名算法

    • RSA-2048:最常用,兼容性好
    • RSA-3072:更高安全级别
    • RSA-4096:最高安全级别
    • ECC P-256:推荐,性能优异
    • ECC P-384:高安全级别
  5. 生成 CSR

    点击「生成」按钮,系统会生成:

    • CSR 文件(提交给 CA 机构)
    • 私钥文件(保存在本地)
  6. 下载文件

    立即下载并保存 CSR 和私钥文件

证书要保护的主域名:

  • 单域名example.comwww.example.com
  • 通配符*.example.com(保护所有子域名)

备用名称(Subject Alternative Name - SAN)

Section titled “备用名称(Subject Alternative Name - SAN)”

用于保护多个域名的证书:

example.com
www.example.com
blog.example.com
shop.example.com

用于 OV 和 EV 证书,需要填写准确的信息:

  • 组织名称(O):与营业执照一致的法定名称
  • 组织单位(OU):部门名称,如”IT Department”(可选)
  • 国家(C):ISO 3166 两位国家代码
  • 省份(ST):完整的省份或州名称
  • 城市(L):完整的城市名称

示例:

O = Example Inc.
OU = IT Department
C = CN
ST = Beijing
L = Beijing

优点

  • 兼容性最好,所有浏览器和客户端都支持
  • 成熟稳定,广泛使用

缺点

  • 密钥长度较长(2048-4096 位)
  • 性能开销较大
  • 证书文件较大

推荐场景

  • 需要兼容老旧设备和浏览器
  • 对性能要求不高的场景

优点

  • 密钥短,相同安全级别下只需 256 位
  • 性能优异,加解密速度快
  • 证书文件小,节省带宽

缺点

  • 极少数老旧设备可能不支持

推荐场景

  • 现代 Web 应用(推荐)
  • 移动应用
  • 高并发场景
  • IoT 设备
算法密钥长度等效安全级别性能兼容性
RSA-20482048 位基准★★★☆☆★★★★★
RSA-30723072 位★★☆☆☆★★★★★
RSA-40964096 位很高★☆☆☆☆★★★★★
ECC P-256256 位≈ RSA-3072★★★★★★★★★☆
ECC P-384384 位≈ RSA-7680★★★★☆★★★★☆
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAO
BgNVBAcMB0JlaWppbmcxFDASBgNVBAoMC0V4YW1wbGUgSW5jMRYwFAYDVQQLDA1J
VCBEZXBhcnRtZW50MRYwFAYDVQQDDA1leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcN
...
-----END CERTIFICATE REQUEST-----
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDU7VR5K3Y0K5K3
hZRHmNb2M8F2qKLHqLXqAGYWqLXqAGYWqLXqAGYWqLXqAGYWqLXqAGYW...
-----END PRIVATE KEY-----

生成 CSR 后,可以验证内容是否正确:

使用 anssl 的 CSR 验证工具,或使用 OpenSSL 命令:

Terminal window
openssl req -text -noout -verify -in example.csr

输出示例:

verify OK
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C = CN, ST = Beijing, L = Beijing, O = Example Inc, CN = example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)

验证以下信息:

  • ✅ 域名是否正确
  • ✅ 组织信息是否准确
  • ✅ 签名算法是否符合预期
  • ✅ 公钥长度是否正确

anssl 会自动为您生成 CSR,无需手动创建。

如果使用外部 CA 机构:

  1. 将 CSR 内容复制到 CA 机构的申请表单
  2. 完成域名验证
  3. 等待 CA 签发证书
  4. 下载证书文件
  5. 将证书和之前保存的私钥一起部署到服务器

如果您熟悉命令行,也可以使用 OpenSSL 生成 CSR:

Terminal window
# 一步生成私钥和 CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout example.com.key \
-out example.com.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/CN=example.com"
Terminal window
# 先生成 ECC 私钥
openssl ecparam -genkey -name prime256v1 -out example.com.key
# 再生成 CSR
openssl req -new -key example.com.key \
-out example.com.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/CN=example.com"

创建配置文件 san.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name
stateOrProvinceName = State or Province Name
localityName = Locality Name
organizationName = Organization Name
commonName = Common Name
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = blog.example.com

生成 CSR:

Terminal window
openssl req -new -key example.com.key \
-out example.com.csr \
-config san.cnf \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc/CN=example.com"

如果私钥丢失:

  • 无法使用已颁发的证书
  • 需要重新生成 CSR 和私钥
  • 重新申请证书

可以用同一个 CSR 申请多次证书吗?

Section titled “可以用同一个 CSR 申请多次证书吗?”

可以,但不推荐。最佳实践是:

  • 每次申请证书都生成新的 CSR 和私钥
  • 定期轮换私钥,提高安全性

CSR 生成后无法修改,如需修改需要重新生成。但对于 DV 证书,CA 机构不会验证组织信息,所以影响不大。