- Client Hello: 客户端告诉服务器信息,如要访问的域名,TLS版本,支持的加密套装,给服务端生成的一个随机数
- Server Hello: 服务端告诉客户端信息,选中的加密套装。如 签名校验使用的算法
- 服务器发送证书及其签发者证书,证书里面主要包括了证书的公钥、证书的适用公用名、证书的有效期还有它的签发者、签发者签名等信息。然后,客户端根据这些信息开始身份校验,验证信息是否真实。
- 简单说明,即,根据该证书信息和该证书签发者的公钥,得到签名串,比对,符合,则说明,该证书确实是由证书签发者签发,没有更改。
- 对证书签发者进行同样的方式检查,到root根证书(内置于操作系统)。都验证通过,说明,这些环节没有被篡改。证书真实,可以使用其公钥。身份认证通过。
- Server Key Exchange : 发送一个比较短的公钥(及签名)给客户端,接下来客户端验证后,使用该公钥,传送客户端要使用的对称密钥过来。
- Client Key Exchange:使用服务器公钥,加密对称密钥,发送给服务器端,从而接下来可以正常对话。
为什么证书(非对称加密)可以验证身份,即证书不会被篡改?
由非对称加密的特性决定的,证书签发者对证书信息使用私钥生成签名,证书签发者的公钥可以解开这个签名,而一旦篡改了证书,那么加解密的内容很难匹配。
关联知识:指纹或摘要,也可以防止篡改,不可逆。
为什么可以防止中间人?
由非对称加密的特性决定的,由于公钥加密的内容只能由私钥解密,因此中间人即使获取了加密后的内容,也没有用(确保对称密钥不泄露)。在对称传送数据阶段,由于中间人没有密钥,也无法获取内容,以及伪造数据。