SSL、TLS、HTTPS 的关系

  1. SSL(Secure Sockets Layer),安全套接字协议;

  2. TLS(Transport Layer Security),传输层安全性协议,TLS 是 SSL 的升级版,两者几乎是一样的

  3. HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),建立在 SSL 协议之上的 HTTP 协议;

面试题

介绍下 HTTPS 中间人攻击

针对 HTTPS 攻击主要有 SSL 劫持攻击和 SSL 剥离攻击两种:

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

介绍 HTTPS 握手过程

  1. 客户端请求服务器,并告诉服务器自身支持的加密算法以及密钥长度等信息;

  2. 服务器响应公钥和服务器证书;

  3. 客户端验证证书是否合法,然后生成一个会话密钥,并用服务器的公钥加密密钥,把加密的结果通过请求发送给服务器;

  4. 服务器使用私钥解密被加密的会话密钥并保存起来,然后使用会话密钥加密消息响应给客户端,表示自己已经准备就绪;

  5. 客户端使用会话密钥解密消息,知道了服务器已经准备就绪;

  6. 后续客户端和服务器使用会话密钥加密信息传递消息;

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

  1. 校验证书的颁发机构是否受客户端信任;

  2. 通过 CRLOCSP 的方式校验证书是否被吊销;

  3. 对比系统时间,校验证书是否在有效期内;

  4. 通过校验对方是否存在证书的私钥,判断证书的网站域名是否与证书颁发的域名一致;

阐述 https 验证身份也就是 TSL/SSL 身份验证的过程

  1. 客户端请求服务器,并告诉服务器自身支持的加密算法以及密钥长度等信息;

  2. 服务器响应公钥和服务器证书;

  3. 客户端验证证书是否合法,然后生成一个会话密钥,并用服务器的公钥加密密钥,把加密的结果通过请求发送给服务器;

  4. 服务器使用私钥解密被加密的会话密钥并保存起来,然后使用会话密钥加密消息响应给客户端,表示自己已经准备就绪;

  5. 客户端使用会话密钥解密消息,知道了服务器已经准备就绪;

  6. 后续客户端和服务器使用会话密钥加密信息传递消息;

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

  1. 主要是为了解决证书的可信问题;

  2. 如果没有权威机构对证书进行签名,客户端就无法知晓证书是否是伪造的,从而增加了中间人攻击的风险,https 就变得毫无意义;

如何劫持 https 的请求,提供思路

  1. https 有防篡改的特点,只要浏览器证书验证过程是正确的,很难在用户不察觉的情况下进行攻击;但若能够更改浏览器的证书验证过程,便有机会实现 https 中间人攻击;

  2. 所以要劫持 https 首先要伪造一个证书,并且要想办法让用户信任这个证书,可以有多种方式,比如病毒、恶意软件、诱导等;一旦证书被信任后,就可以利用普通中间人攻击的方式,使用伪造的证书进行攻击;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. SSL、TLS、HTTPS 的关系
  2. 2. 面试题
    1. 2.1. 介绍下 HTTPS 中间人攻击
    2. 2.2. 介绍 HTTPS 握手过程
    3. 2.3. HTTPS 握手过程中,客户端如何验证证书的合法性
    4. 2.4. 阐述 https 验证身份也就是 TSL/SSL 身份验证的过程
    5. 2.5. 为什么需要 CA 机构对证书签名
    6. 2.6. 如何劫持 https 的请求,提供思路