数字证书核心概念通俗解析
本文通俗易懂地解释了证书、认证方式以及 CSR、SAN 等核心概念,并介绍了如何查看证书信息。
0. 通俗解释:数字证书的"身份证"隐喻
我们可以把计算机网络中的数字证书 想象成现实生活中的身份证 或护照。
1. 公钥与私钥:照片与人脸
- 私钥 (Private Key) = 你的真脸 (或指纹)
- 它是独一无二的,长在你身上(保存在服务器里)。
- 绝对不能给别人(泄露了就有人能冒充你)。
- 只有拥有这张"真脸",才能证明你是证书的主人。
- 公钥 (Public Key) = 你的证件照
- 它是公开的,可以印在身份证上给所有人看。
- 验证原理 :别人怎么确认你是本人?他们看着身份证上的照片(公钥) ,再看看你的真脸(私钥),如果这就对上了(数学上的匹配),就证明了身份。
2. CSR (证书签名请求) = 办理证件的申请表
当你需要申请证书时,你不能直接让 CA 给你发证,只需:
- 填写申请表:填上你的名字(CN / 域名)、单位(O)、部门(OU)等信息。
- 贴上照片 :把你的公钥(证件照)附在申请表里。
- 提交 :把这张表交给 CA。注意!你不需要把"真脸"(私钥)寄给 CA,你只需保管好它。
3. CA (证书颁发机构) = 公安局 / 发证机关
- CA 是大家都信任的权威第三方(比如派出所)。
- 颁发证书 :CA 收到你的申请表(CSR),核实你的身份无误后,会制作一张卡片,印上你的信息和照片,最关键的是------盖上公安局的防伪钢印(CA 的数字签名)。
- 信任链:因为大家(浏览器/操作系统)都无条件信任"公安局",所以只要看到身份证上有公安局的真钢印,就无条件信任这张身份证是合法的,也相信卡片上的人就是你。
4. 多级证书体系 (Intermediate CA) = 派出所与公安部
在现实中,公安部(根 CA)不会直接给每个人办身份证,因为太忙且风险大(万一公安部的大印章丢了就麻烦了)。
- 根证书 (Root CA) = 公安部:最高权威,但这枚大印章锁在地下金库里,轻易不拿出来。
- 中间证书 (Intermediate CA) = 各地派出所:公安部给派出所发授权书(盖了公安部的章)。派出所用自己的章给老百姓办身份证。
- 信任链 (Chain of Trust) :
- 你出示身份证(终端证书)。
- 验查员看:是"朝阳派出所"发的(中间证书)。
- 再看"朝阳派出所"的授权书:是"公安部"发的(根证书)。
- 因为信任公安部,所以信任派出所,最终信任你的身份证。这就是证书链。
提示 :关于 TLS(单向认证)与 mTLS(双向认证)的详细原理及区别,请阅读同目录下的文章 TLS 与 mTLS 通俗原理解析。
1. 核心概念解析
CSR (Certificate Signing Request / 证书签名请求)
📝 形象比喻:办理护照的"申请表"
- 你去办护照时,需要填写一张申请表 ,上面写着你的名字、住址(Subject 信息)。
- 你还需要贴上你的证件照 (公钥)。
- 你签上名提交给出入境大厅(CA)。
- CA 审核通过后,发给你的护照 (证书 )上依然贴着那张照片,但多了CA 的防伪钢印。
- CSR 就是那张填好信息、贴好照片、但还没盖章的申请表。
CSR 在公钥基础设施(PKI)体系中扮演着重要角色。
CSR 的作用:
- 证书申请:客户端向 CA 请求数字证书时提交的文件。
- 身份信息传递:包含客户端的重要身份信息和公钥。
- 安全性保障:私钥由客户端自己保管,不通过网络传输,只发送公钥和信息给 CA。
CSR 包含的信息:
- 主体信息(Subject Information) :
- CN (Common Name) :通用名称,通常是域名或主机名(如
www.example.com)。 - O (Organization):组织名称。
- OU (Organizational Unit):部门名称。
- L, ST, C:城市、省份、国家代码。
- CN (Common Name) :通用名称,通常是域名或主机名(如
- 公钥(Public Key):将被包含在最终证书中,用于加密数据。
- 签名算法:如 SHA-256 with RSA。
- 可选扩展信息:如 SAN (Subject Alternative Name)。
客户端证书是否需要 SAN (Subject Alternative Name)
🏷️ 形象比喻:一个人的"曾用名"与"别名"
- CN (Common Name) 就像你的法定姓名(例如 "王小明")。
- SAN (主体备用名称) 就像你的别名列表:你既是 "王小明",也是公司里的 "Mike",还是家里的 "乖孙子"。
- 如果你只有一张名片(证书),上面只写了 "王小明"。当你去公司(特定服务)时,保安只认 "Mike",那你就进不去。
- 如果你在名片备注栏(SAN)里写上:本名 "王小明",别名 "Mike"。那不管是回家还是去公司,这一张名片都通用。
需要 SAN 域的情况:
- 多身份验证需求:客户端需要以多种身份(不同域名、IP)进行通信。
- 与多服务交互:不同的服务依赖不同的标识(如域名)进行验证。
- 支持多种网络环境:同时包含内部域名、公网 IP、外部域名等,适应不同网络。
不需要 SAN 域的情况:
- 单一身份验证:仅使用单一固定身份,且验证只依赖 Subject (如 CN)。
- 传统验证方式:系统只关注证书基本信息,不支持 SAN。