前端面试-网络-HTTPS、TLS、SSL

123 阅读3分钟

一、HTTPS、TLS、SSL的关系

  • SSL:安全套接字协议
  • TLS:传输层安全协议,TLS是SSL的升级版,两者几乎是一样的
  • HTTPS:建立在SSL/TLS之上的HTTP协议
  • CA证书
    • 服务器的公钥
    • 网站域名
    • 颁发证书的机构
    • 证书有效时间

二、HTTPS握手过程

  • 当TCP三次握手完成后,就开始了HTTPS握手过程
  • 客户端将自身支持的加密算法、TLS/SSL版本以及生成的随机数发送给服务器
  • 服务器接收到客户端发来的算法和TLS/SSL版本后,从中抽取一种一种算法和TLS/SSL版本以及生成一个随机数,并告诉客户端
  • 然后服务器将包含公钥的ca证书发送给客户端
  • 客户端检验证书的合法性后,通过证书颁发机构公布的公钥进行解码,获取到服务器发送的公钥
  • 然后通过服务器和客户端自身的随机数生成会话密钥,并通过服务器的公钥加密后发给服务器
  • 服务器使用私钥解密并将会话密钥保存起来,然后通过会话密钥加密消息告诉客户端,表示自己已经准备好了
  • 客户端使用会话密钥解密后,知道服务器已经准备就绪
  • 后续客户端和服务器使用会话密钥加密消息进行传递

三、HTTPS握手过程中,客户端如何校验证书的合法性

  • 校验证书颁发机构是否受信任
  • 通过CRL或OCSP的方式校验证书是否被吊销
  • 对比系统时间,校验证书是否在有效期内
  • 通过校验对方是否存在证书的私钥,判断证书的网站域名和证书颁发的域名是否一致

四、为什么需要CA机构对证书签名

主要是为了解决证书的可信问题,如果没有权威机构对证书进行签名,客户端就无法知道证书是否为伪造,从而增加中间人攻击的风险,https将变得毫无意义

五、介绍下中间人攻击

中间人攻击主要有SSL劫持攻击和SSL剥离攻击两种。

  • SSL劫持攻击
    • 攻击者劫持了客户端和服务器之间的连接,将服务器的合法证书替换为伪造证书,从而获取实现客户端和服务器之间传递的信息。
    • 这种方式一般容易被客户端发现,因为浏览器会明确提示证书错误,但某些用户安全意识不高,可能会点击继续浏览,从而达到攻击
  • SSL剥离攻击
    • 攻击者劫持了客户端和服务器之间的连接,然后保持攻击者和服务器之间的HTTPS连接,但发送给客户端的是普通的HTTP连接,由于HTTP是明文传输,即可获取客户端传输的明文数据