HTTPS工作流中客户端如何判断连接的是合法服务器而非恶意服务器
HTTPS客户端识别恶意伪造服务器证书的机制
HTTPS体系从设计上就通过多层证书校验逻辑,避免客户端接入持有伪造证书的恶意服务器,核心校验步骤如下:
- 信任链校验
操作系统、浏览器都会内置全球公认的受信任根CA(证书颁发机构)公钥列表。正规网站的TLS证书,本质是由根CA或其授权的二级CA用私钥签名签发的。恶意服务器伪造的证书要么是自签名的,要么是用未被纳入信任列表的机构私钥签名的,客户端在校验时往上溯源找不到匹配的内置信任根,会直接判定证书不可信,弹出警告并中断连接。
正常情况下伪造的证书不可能获得受信任CA的合法签名,一旦出现CA被攻破违规签发证书的情况,该CA会被立刻从全球所有设备的信任根列表中移除,相关证书同步失效。 - 域名匹配校验
即使恶意方通过特殊渠道拿到了某张合法签发的证书,客户端还会校验证书的「主体通用名」「SAN(主体备用名称)」字段,和当前用户访问的域名是否完全匹配,字段不匹配的证书会直接被判定无效。 - 有效性校验
每张证书都标注了明确的有效起止时间,过期证书会被直接拦截。同时客户端还会通过CRL(证书吊销列表)、OCSP(在线证书状态协议)校验证书是否已经被持有者主动申请吊销,已吊销的证书即使前两项校验通过也不会被信任。
只有用户手动忽略浏览器的不安全证书警告,主动跳过系统默认的校验逻辑时,才有可能和持有伪造证书的恶意服务器建立连接。
内容的提问来源于stack exchange,提问作者Parth Shah
相关产品推荐
相关产品推荐

