MST

星途 面试题库

面试题:网络编程之HTTPS在Web浏览器中的安全策略实现

当Web浏览器与服务器建立HTTPS连接时,可能会遇到中间人攻击。请详细说明浏览器如何通过证书验证机制来防范此类攻击,包括证书链的验证过程及可能出现的异常情况处理。
22.4万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

浏览器通过证书验证机制防范中间人攻击的方式

  1. 证书获取:当浏览器与服务器建立HTTPS连接时,服务器会将数字证书发送给浏览器。
  2. 基本信息检查
    • 浏览器首先检查证书的有效期,确保证书未过期。
    • 检查证书中的域名是否与当前访问的服务器域名匹配,防止证书被用于其他非法站点。
  3. 证书链验证
    • 根证书信任:浏览器内置了受信任的根证书颁发机构(CA)列表。如果服务器证书是由这些受信任的CA直接颁发的,那么验证相对简单,直接与内置列表对比即可确认其合法性。
    • 证书链构建:如果服务器证书是由中间CA颁发的,浏览器需要构建证书链。服务器证书包含颁发者信息,指向中间CA证书。中间CA证书同样包含其颁发者信息,可能指向更高级别的中间CA或根CA。
    • 逐一验证:浏览器从服务器证书开始,沿着证书链向上验证。对于每个证书,验证其签名的有效性。签名是由上一级CA使用其私钥对证书内容(如公钥、有效期、主体信息等)进行加密生成的。浏览器使用上一级CA的公钥对签名进行解密,如果解密后的内容与证书内容一致,则签名验证通过,继续验证下一个证书,直到到达根CA。根CA证书的签名由浏览器内置的根CA公钥验证。如果整个证书链验证通过,说明服务器证书是可信的。

可能出现的异常情况及处理

  1. 证书过期:浏览器会提示用户证书已过期,该连接可能不安全,用户可以选择继续访问(不推荐)或放弃连接。
  2. 域名不匹配:浏览器会明确提示域名与证书中的域名不一致,这可能是中间人攻击的迹象,用户通常不应继续访问,除非确定这是由于合法原因(如网站配置错误但确实可信任),但这种情况应谨慎处理。
  3. 证书链验证失败
    • 中间CA不受信任:如果证书链中某个中间CA不在浏览器信任列表中,浏览器会提示证书不受信任。这可能是中间人伪造了一个中间CA证书,用户应停止连接,因为该连接可能已被篡改。
    • 签名验证失败:如果某个证书的签名验证失败,同样说明证书可能被篡改,浏览器会显示证书无效的提示,用户应避免继续访问该站点,防止信息泄露或遭受攻击。