我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情
HTTPS是怎么连接的?数据又是怎么加密的呢?
第一步
客户端和服务端建立一个TCP连接。
第二步
连接建立完毕后,客户端发送一个“client hello”到服务端。
这条消息包括一套客户端支持的加密算法和最新的TLS 版本号。
服务端用“server hello”进行回应,让客户端知道服务端是否支持算法和TLS版本号。
接下来服务端会发送SSL证书给到客户端。证书包含public key, host name, expiry dates等。然后客户端会校验这个证书。
第三步
校验完SSL证书后,客户端生成一个session key,并且使用public key进行加密。服务端收到加密的session key后,会用服务端的private key进行解密。
第四步
客户端和服务端现在都拿到了session key,即对称加密的密钥。后续客户端和服务端就用这个密钥对双向通信的数据进行加密。