10分钟了解https

127 阅读2分钟

目标

  • 安全传输网页信息

整体流程

截屏2023-04-28 16.14.32.png

  1. 浏览器向服务器发起建立SSL链接请求
  2. 服务器返回证书,包含一个非对称加密的公钥
  3. 浏览器首先需要对证书进行验证,确保证书本身的可靠性;然后生成一个【对称加密密钥】,使用证书中的公钥加密后,传输给服务器
  4. 服务器使用私钥解密,获得【对称加密密钥】,随后浏览器和服务器之间的通信内容都用这个【对称加密密钥】加解密

证书验证流程

截屏2023-04-28 16.10.02.png

  1. 证书本身有明文数据和签名两部分组成
  2. 首先将证书的数据用散列函数算出散列值
  3. 然后用浏览器内置的CA证书公钥的签名进行解密,获得另一组散列值
  4. 如果两个散列值相同,则证书验证通过

Q&A

  • 为什么不直接用对称加密?
    • 无法做到跟所有用户提前约定对称加密密钥;如果通过服务端下发密钥,那么又要解决密钥本身的安全问题
  • 为什么不直接用非对称加密?
    • 非对称加密开销较大,如果每个请求都使用非对称加密,会显著增加服务延时
  • 为什么服务端需要传证书给浏览器,而不是不直接传公钥?
    • 直接传公钥无法对公钥本身进行验证,如果此时遇到中间人攻击,第三方拦截了这个公钥,然后伪造一个新的公钥,则接下来双方的信息传输全部会被暴露给这个中间人

参考文献: