在生成 CSR 时,你需要提供以下信息。请记住,除了“Common Name”外,其余字段虽非强制,但建议填写规范。
| 字段 (Field) | 含义 | 填写说明 | 示例 |
|---|---|---|---|
| Common Name (CN) | 通用名称 | 必须填写你要保护的精确域名。如果需要保护 example.com 和 www.example.com,通常填写主域名 example.com 或 *.example.com(泛域名)。 | your-domain.com 或 *.your-domain.com |
| Country Name (C) | 国家代码 | 两位大写字母的国家代码。 | CN (中国) 或 US (美国) |
| State or Province (ST) | 省份/州 | 你所在省份的完整拼写。 | Guangdong |
| Locality or City (L) | 城市 | 你所在城市的完整拼写。 | Shenzhen |
| Organization (O) | 公司/组织名称 | 如果是个人网站,可以填写你的姓名或直接留空。 | Example Inc. 或 Li Ming |
| Organizational Unit (OU) | 部门名称 | 通常可以不填,或填写 IT Department。 | IT Dept |
| Email Address | 邮箱地址 | 用于接收通知的邮箱。 | admin@your-domain.com |
KeyManager 是一个在你本地电脑上运行的软件。它生成 CSR 和私钥时,整个过程是这样的:
1、在你电脑本地,KeyManager 同时算出了配对的 私钥 (KEY) 和 公钥。
2、它把公钥和你的域名信息打包成 CSR。
3、私钥 (KEY) 从头到尾没有离开过你的电脑,被 KeyManager 安全地保存在本地。
CSR 文件的内容结构大致是:
-----BEGIN CERTIFICATE REQUEST-----
信息:域名 = mstx.cn
信息:组织 = 我的公司
公钥:这里有一长串字符(就是和私钥配对的公钥)
签名:用私钥对以上信息的签名(证明这是你本人提交的)
-----END CERTIFICATE REQUEST-----
关键点:
CSR 里包含了公钥,而公钥和私钥是数学绑定的。
FreeSSL 根据 CSR 签发证书时,会把公钥原封不动地写进证书(mstx.cn.pem)里。
所以证书里的公钥,必须和你手里的私钥是同一对,否则无法解密。
FreeSSL生成三个文件:intermediate.pem,mstx.cn.pem,root.pem,需要合并文件:
cat mstx.cn.pem intermediate.pem > mstx.cn_bundle.crt
把整个证书过程想象成寄一封挂号信:
| 文件 | 比喻 | 作用 |
|---|---|---|
mstx.cn.key(私钥) | 你的私人印章 | 只有你有,用来解锁和签名。绝对不能给别人! |
mstx.cn.pem(网站证书) | 身份证 | 证明“mstx.cn 这个网站是合法的”。上面有你的公钥信息。 |
intermediate.pem(中间证书) | 派出所的证明 | 证明“给你发身份证的那个机构是可信的”。 |
root.pem(根证书) | 公安部的授权文件 | 证明“整个认证体系的源头是可信的”。浏览器自带,不用你管。 |
它们之间的真正关系
1、私钥 (mstx.cn.key) 和网站证书 (mstx.cn.pem) 是“天生一对”
它们是在你申请证书时同时生成的。
mstx.cn.pem 证书文件里,包含了用你私钥加密过的信息(也就是公钥)。
当用户访问你的网站时,浏览器会检查:mstx.cn.pem 里的公钥,和 mstx.cn.key 私钥,能不能对上?
对不上 = 网站不安全,浏览器就会报错。
2、网站证书 (mstx.cn.pem) + 中间证书 (intermediate.pem) = 完整的“信任链”
浏览器只认 root.pem(根证书),但你的证书不是根证书机构直接签发的,中间还有个代理机构。
所以你需要把 mstx.cn.pem 和 intermediate.pem 合并成一个文件,告诉浏览器:“你看,我的身份证是经过这个派出所认证的,而这个派出所又是公安部授权的。”
这样浏览器才会信任你的网站。
3、root.pem(根证书)是“备胎”
所有主流浏览器和操作系统已经内置了全球通用的根证书。
你手里的 root.pem 基本用不上,除非你是在一个非常老旧或特殊的设备上部署,一般直接忽略它。