ssl

ssl 目前已经是一项很基本的安全措施, 旨在: 1. 加密通信的信息, 防止被网络窥视 2. 通过证书标示通信方的身份, 防止中间人攻击.

工作过程(我所理解的)

  • 客户端发起连接
  • 服务器发送它的证书
  • 客户端收到证书后, 如果:

    • 证书是某个权威证书机构(CA)签发的

      那么就用客户端操作系统预制的公钥解密证书, 解密出的内容如果和当前访问的域名一致, 那么证书正确, 该服务器确实证书所指的服务器, 这就解决了目标2: 防止中间人攻击. 如果证书不正确, 那么服务器就属于人证不一致, 它并非该证书所指的服务器, 建立 ssl 连接失败.

    • 证书不是权威机构签发的

      比如 12306, 自己给自己签发证书. 那么用该证书的公钥解密该证书, 如果正确, 浏览器就会提示警告"This certificate was signed by an untrusted issuer". 用户如果信任该证书, 那么还可以继续建立 ssl 连接. 如果不正确, 那么就属于中间人攻击.

工作过程(真实的)

阮一峰-SSL/TLS协议运行机制的概述