HTTPS in 5 mins

HTTPS = HTTP + TLS/SSL

  1. 客户端请求服务端域名,包含内容:
    • 客户端生成的随机数r0
    • 支持的加密通信协议版本,如TLS 1.0
    • 支持的加密算法,如RSA
    • 支持的压缩算法
  2. 服务端返回公钥,包含内容:
    • 服务端生成的随机数r1
    • 确认协议版本
    • 确认加密算法
    • 服务器证书
  3. 客户端验证服务器证书
    • 验证:可信机构颁布、域名一致、是否过期等
    • 验证完后从证书中取出公钥
  4. 客户端握手结束,包含内容:
    • 客户端生成的随机数r2,用服务器公钥加密防止窃听
    • 编码改变通知,表示后续交互的加密方法及密钥
    • 客户端握手结束通知,对之前发送的所有内容hash
  5. 服务端回应
    • 根据r0, r1, 及用私钥解密出的r2计算会话密钥
    • 编码改变通知,确认加密方法及密钥
    • 服务端握手结束通知,对之前发送的所有内容hash