在客户端服务器的场景下,服务器拥有公钥和私钥,在加密的场景下,客户端通过使用公钥加密与服务端通信,服务端收到之后使用私钥解密。
数字签名:服务端发送给客户端之前,对消息内容使用Hash,生成内容的摘要。同时,使用私钥对摘要进行加密,生成了数字签名。
证书中心CA:这里存在一个问题,客户端的公钥有可能是被替换伪造的。于是,服务器找到CA,CA用自己的私钥,对服务器的公钥与相关信息进行加密,生成数字证书。在客户端使用公钥的时候,使用CA的公钥对服务端的公钥进行验证。
于是,服务器发送信息的时候,签名的同时附上数字证书。客户端接受后,使用CA的公钥解开数字证书,获得服务器的公钥,并且可以验证公钥的确是属于服务器的。
1.浏览器发出加密请求
2.服务端使用私钥加密网页内容之后,附带数字证书。
3.浏览器有“证书管理”,有“受信任的根证书颁发机构”,浏览器在列表中查找解开数字证书的公钥是否在列表之内。数字证书中的相关信息与当前网址不一致,则说明证书被冒用。如果证书不是受信任的机构颁发,则发出另一种警告。
4.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,与服务器交换加密信息。
域名验证DV
组织验证OV
扩展验证EV