我知道 HTTPS 基于证书颁发机构 (CA)。如果客户端尝试向服务器发送请求(假设有证书),中间人是否可以从客户端获取证书并从 CA 获取公钥?同时,中间人给客户端一个伪造的证书,当客户端向 CA 发送证书时,中间人再次拦截它并给他伪造的公钥。
我希望我的问题足够清楚。谢谢。
我知道 HTTPS 基于证书颁发机构 (CA)。如果客户端尝试向服务器发送请求(假设有证书),中间人是否可以从客户端获取证书并从 CA 获取公钥?同时,中间人给客户端一个伪造的证书,当客户端向 CA 发送证书时,中间人再次拦截它并给他伪造的公钥。
我希望我的问题足够清楚。谢谢。
虽然中间人对流经它的流量有很大的权力,但 CA 列表通常受到很好的保护。浏览器(等)不会就其信任的 CA 向任何人咨询。该列表是操作系统或软件包的一部分,并通过正常的操作系统/软件更新过程进行更新。(Windows 有一个公共的系统信任库,但应用程序可以自带 - java 和 mozilla 是常见的 DIY 者。几乎所有其他操作系统也是如此。)
例如,如果您仍在使用 Windows XP,则 Let's Encrypt 使用的根 CA 最近到期需要本地纠正措施——删除旧 CA,导入新 CA——因为 XP 不再从 Microsoft 获取更新。如果正在安装自动更新,则较新版本的 Windows 已经具有更新的信任库。