什么是CSR?SSL证书申请中的CSR文件有什么用?
CSR(Certificate Signing Request,证书签名请求)是申请 SSL/TLS 证书时提交给 CA(证书颁发机构)的请求文件。
简单来说,CSR主要包含申请域名、公钥以及申请者填写的部分信息。生成CSR时会同时产生一对密钥,其中私钥由申请者自己保管,不能提交给CA;CA审核通过后,会根据CSR中的公钥签发SSL证书。
因此,申请SSL证书时可以把它理解成:
私钥自己保存 → 根据私钥生成CSR → 把CSR提交给CA → CA签发证书 → 证书和原来的私钥一起部署到服务器。
CSR文件有什么作用
CSR并不是SSL证书本身,而是向CA提交的证书申请请求。
它主要有三个作用。
1. 提供证书申请所需的信息
CSR中会包含证书申请相关的信息,例如:
- 域名;
- 公钥;
- 组织名称等主题信息;
- 密钥算法及相关参数;
- SAN(Subject Alternative Name)等扩展信息。
对于现在的SSL/TLS证书来说,实际访问的域名主要以SAN字段为准。
例如申请:
example.com
www.example.com
生成CSR时就可以根据证书需求将这些域名放入SAN中。
2. 将SSL证书与密钥对建立对应关系
生成CSR时,需要使用一对密钥:
私钥(Private Key)
↓
生成CSR
↓
提交给CA
↓
CA签发SSL证书
↓
证书 + 原始私钥
↓
部署到服务器
SSL证书中包含的公钥必须与服务器上的私钥属于同一对密钥。
这也是为什么安装证书时经常会遇到**“证书与私钥不匹配”**的问题。
如果申请证书时使用的是A私钥生成的CSR,后来安装证书却使用了B私钥,那么证书虽然本身没有问题,也无法正常完成TLS握手。
3. 让CA能够为指定公钥签发证书
CSR中包含申请者的公钥,并使用对应私钥对CSR进行签名。
CA收到CSR后,会对CSR进行解析和验证,并根据证书类型执行相应的域名验证或组织身份验证。
验证通过后,CA使用CA自身的签名私钥签发最终的SSL/TLS证书。
这里需要注意:
CA不会因为签发证书而获得申请者的私钥。
申请者的私钥应该始终由申请者自己保管。
CSR、私钥和SSL证书有什么区别
这三个文件经常被混淆,可以直接这样理解:
| 名称 | 主要作用 | 是否提交给CA | 是否需要部署到服务器 |
|---|---|---|---|
| 私钥 KEY | 与证书建立密钥对应关系,参与TLS握手 | ❌ 不提交 | ✅ 需要 |
| CSR | 向CA申请SSL证书 | ✅ 提交 | ❌ 不需要 |
| SSL证书 CRT/PEM | CA签发的服务器数字证书 | CA生成 | ✅ 需要 |
最重要的一点是:
CSR可以提交给CA,私钥不能提交给CA。
如果某个所谓的“在线CSR生成器”要求你上传或输入已有私钥,应当谨慎处理。
CSR是怎么生成的
以最常见的RSA证书为例,基本过程如下:
生成RSA私钥
↓
根据私钥生成公钥
↓
使用公钥及证书申请信息生成CSR
↓
将CSR提交给CA
↓
完成域名/企业身份验证
↓
CA签发SSL证书
其中真正需要重点保护的是私钥。
CSR即使被别人看到,一般也不会直接导致服务器被入侵,因为CSR中没有你的私钥。
但是,如果服务器上的私钥泄露,风险就完全不同了。攻击者可能利用私钥冒充服务器建立TLS连接。
CSR文件里面有什么
常见的CSR文件采用PEM编码格式,打开后可以看到类似内容:
-----BEGIN CERTIFICATE REQUEST-----
MIIC...
...
-----END CERTIFICATE REQUEST-----
结尾为:
-----END CERTIFICATE REQUEST-----
CSR通常保存为.csr文件,也可以使用文本编辑器查看其PEM内容。
需要注意的是,CSR本身不是SSL证书。
SSL证书一般以:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
作为开始和结束标记。
两者不要混淆。
申请SSL证书时,CSR中的域名怎么填写
如果是单域名证书,例如:
www.example.com
那么申请时需要按照证书产品的要求生成对应CSR。
如果需要同时保护:
example.com
www.example.com
则应根据CA及证书产品的要求,将需要保护的域名加入SAN。
例如:
DNS:example.com
DNS:www.example.com
如果需要保护大量不同域名,可以选择多域名(SAN)SSL证书。
如果需要保护:
www.example.com
api.example.com
mail.example.com
shop.example.com
则可以考虑:
*.example.com
这样的通配符SSL证书。
不过,通配符证书主要保护同一主域下的一级子域名,例如:
api.example.com
mail.example.com
不能直接覆盖:
test.api.example.com
也不能用*.example.com代替example.com本身。
申请SSL证书一定要自己生成CSR吗
不一定。
这取决于申请平台和服务器环境。
有些SSL证书申请平台提供在线生成CSR的功能;部分服务器控制面板也可以直接生成CSR和私钥。
如果选择自行生成CSR,建议直接在需要部署证书的服务器或受信任的本地环境生成,这样私钥从生成开始就由自己掌握。
如果使用第三方在线工具生成CSR,则一定要确认工具是否会接触或保存私钥。
对于企业生产环境,更推荐自己生成密钥和CSR。
CSR生成后私钥放在哪里
生成CSR时,一般会同时得到私钥。
例如:
example.com.csr
example.com.key
其中:
.csr文件提交给CA;.key文件自己保存。
不要把.key私钥上传到公开网盘、代码仓库或论坛,也不要随意发送给其他人。
如果服务器已经生成了私钥,申请SSL证书时只需要把CSR提交给CA即可。
CSR丢失了怎么办
如果只是CSR文件丢失,但原来的私钥还在,一般问题不大。
CSR主要用于向CA提交申请,证书签发完成后并不需要依赖CSR才能部署证书。
但是,如果私钥也丢失了,情况就不同。
已经签发的SSL证书无法通过重新生成一个CSR来恢复原来的私钥。此时应重新生成密钥对和CSR,并根据CA及证书产品的规则重新申请或重新签发证书。
所以真正需要重点备份的是:
SSL证书可以重新下载,CSR通常可以重新生成,但原始私钥丢失后无法恢复。
如何检查CSR是否正确
如果想确认CSR中的域名、公钥算法和其他信息,可以使用OpenSSL查看:
openssl req -in example.csr -noout -text
如果是PEM格式CSR,该命令可以查看CSR的详细内容。
也可以使用TopSSL提供的CSR文件验证工具检查CSR格式和基本信息。
CSR与SSL证书的关系
整个过程可以浓缩成下面这张关系图:
生成密钥对
│
┌─────────┴─────────┐
↓ ↓
私钥 KEY 公钥
│ │
│ ↓
│ CSR
│ │
│ ↓
│ 提交给 CA
│ │
│ 域名/组织验证
│ │
│ ↓
│ SSL证书 CRT
│ │
└─────────┬─────────┘
↓
部署到服务器
↓
HTTPS
因此,CSR不是证书,也不是私钥,而是把公钥和证书申请信息提交给CA的一种标准格式请求文件。
常见问题 FAQ
Q:CSR里面包含私钥吗? A:不包含。CSR包含公钥及证书申请信息,并由对应私钥进行签名。私钥应由申请者自己保存。
Q:CSR可以发给CA吗? A:可以。CSR本来就是提交给CA用于申请SSL/TLS证书的文件。
Q:SSL证书签发后还需要CSR吗? A:一般不需要。部署证书时主要需要SSL证书、私钥以及部分服务器环境所需的中间证书链。
Q:CSR丢了需要重新申请SSL证书吗? A:不一定。如果原来的私钥仍然保存完好,CSR丢失一般不会影响已经签发的证书使用。真正不能丢的是与证书匹配的私钥。



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
















