什么是证书签名请求(CSR)?
证书签名请求(Certificate Signing Request, CSR)是申请 SSL 证书时生成的一个标准化文本文件,包含申请者的公钥和身份信息。CA 在签发证书前必须验证 CSR 中的信息,确保其格式符合 PKCS#10 规范,并与最终颁发的 ssl证书 内容一致。CSR 本身不包含私钥,但必须使用与之配对的私钥进行签名,以证明申请者对公钥的控制权。生成 CSR 是部署 HTTPS 的第一步,通常在服务器或密钥管理工具中完成。主流 Web 服务器如 Apache、Nginx、IIS 均支持通过 OpenSSL 或内置命令生成 CSR。其核心字段包括:Common Name(CN,即域名)、Organization(O)、Organizational Unit(OU)、Locality(L)、State(ST)和 Country(C)。其中,CN 字段在单域名证书中代表主域名,在通配符证书中可表示为 *.example.com。
CSR 的合法性由 CA 依据 CA/B Forum Baseline Requirements 进行校验。若申请 OV SSL证书 或 EV SSL证书,CA 还需人工审核组织信息的真实性。DV 证书则仅验证域名控制权,通常通过 HTTP 文件响应或 DNS 记录完成。
当前时间是 (东8区) 北京时间:2026年1月22日,星期四。
CSR 的结构与编码
CSR 采用 ASN.1 格式编码,常见输出为 PEM 格式,以 -----BEGIN CERTIFICATE REQUEST----- 开头,-----END CERTIFICATE REQUEST----- 结尾。可通过 openssl req -noout -text -verify 命令解析其内容。关键部分包括: - Subject:标识申请实体的身份信息 - Public Key Info:包含算法类型(如 RSA 2048、ECDSA P-256)和公钥数据 - Signature Algorithm:用于签署 CSR 的算法(如 sha256WithRSAEncryption)任何字段错误(如域名拼写错误或组织单位缺失)都将导致 CA 拒绝签发。因此,在提交前应使用 ssl证书工具 验证 CSR 内容。
安全风险与最佳实践
私钥应在本地安全环境中生成,避免在第三方平台输入私钥。一旦私钥泄露,攻击者可伪造 TLS 握手过程,即使证书未被吊销仍可能导致中间人攻击。建议使用强密钥长度(RSA 至少 2048 位,推荐 3072;ECDSA 使用 P-256 及以上),并在生成后妥善备份。对于多域名场景,可在 CSR 中通过 subjectAltName(SAN)扩展字段列出所有域名。此时应选择 多域名SSL证书 而非多个单域名证书,以降低管理复杂度。通配符证书的 CSR 应明确标注 CN 为 *.domain.com,并在 SAN 中重复该条目以确保兼容性。
| 维度 | 参考标准 | 工程师建议 |
|---|---|---|
| 密钥算法 | RSA 2048+ / ECDSA P-256+ | 优先选用 ECDSA 提升性能,尤其适用于移动终端 |
| 编码格式 | PEM 或 DER | Web 服务器通用 PEM;Java 环境常用 DER |
| 域名覆盖 | RFC 5280 SAN 扩展 | 所有域名必须显式列于 SAN,CN 已不再作为唯一标识 |
常见问题
Q:能否修改已生成的 CSR?A:不能。任何更改都会使原有签名失效,必须重新生成 CSR 和私钥。
Q:是否可以重复使用同一私钥申请多个证书?
A:可以,但不推荐长期复用。密钥轮换是安全基线要求,建议每次续期生成新密钥对。
Q:CSR 提交后多久能收到证书?
A:DV 证书通常几分钟内签发;OV/EV 因需人工审核,耗时数小时至数个工作日。



京公网安备11010502031690号
网站经营企业工商营业执照
















