🥑提示:把客户端想成 Alice,服务器端想成 Bob 即可。客户端实际上指的是客户端浏览器。
下面,我们看一个应用 数字证书 的实例:HTTPS 协议,该协议主要用于网页加密。
Step1:首先,客户端向服务器发出加密请求。
为什么说是加密请求啊?这里不是申请一个安全连接吗?
Step2:服务器用自己的私钥加密网页以后,连同自己的数字证书,一起发送给客户端。
个人理解:这里客户端是 Alice 的角色,Server 是 Bob 的角色。Bob 发送给 Alice 的信息包含:私钥加密后的网页内容、数字签名、数字证书。其中,数字证书是证书授权中心 CA 颁发给 Bob 的。数字证书用于提供 Bob 的公钥,防止其他人的公钥冒名顶替。
Step3:在客户端浏览器的 证书管理 中,有 受信任的根证书颁发机构 列表。客户端浏览器会根据这张列表,查看颁发服务器数字证书的 CA 的公钥是否在列表中。
上图源自 Chrome 浏览器
个人理解:客户端浏览器首先要判断颁发该数字证书的 CA 靠不靠谱。
Step4:如果数字证书不是由受信任的机构颁发的,客户端浏览器会发出警告。
找不到高清的图啊,不知道各个浏览器有没有对这些安全警告的汇总😇
Step5:如果数字证书记载的网址,与你正在浏览的网址不一致,那么说明该数字证书可能被冒用,客户端浏览器会发出警告。
在谷歌上只找到了年代久远的安全警告😇
说明:数字证书不仅包含了服务器的公钥,它还包含了服务器的身份信息,比如服务器的名称即网址。
Step6:如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息了。
个人理解:如果数字证书是可靠的,说明证书中的服务器公钥没有被冒名顶替,那么以后在传输信息的时候,客户端可以放心地使用服务器的公钥对信息进行加密,并且只有服务器的私钥才能解开加密后的信息。