“客户端通过服务端的公钥对私钥加密”这句话就错了,私钥全程不参与传输,自然也不会被加密。客户端加密并发送的是用来握手的随机数。
服务器如何确认客户端是真实的客户端?答案是:双向认证。不仅客户端要验证服务器的证书,服务器同样要验证客户端的证书,彻底杜绝中间人攻击的可能。需要双向认证的场景在B/S架构中很罕见,多见于C/S架构,因为服务器需要预置客户端的证书。有不少APP都使用了这一技术防止被抓包。
而在传统的SSL单向认证中,黑客可能在其中充当中间人的角色,他可以欺骗服务器自己是客户端,但无法欺骗客户端自己是服务器,因为他没有服务器的私钥,不能解密客户端用公钥加密的随机数,也就无法和客户端完成握手。黑客可以伪造一份自签名证书给客户端,但由于黑客不是可信CA,客户端的浏览器将提示证书无效。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有