[3]可以推测,CA 实际上在签署您的证书之前验证您是谁。如果他们不这样做,那么我就可以为 google.com 创建一个证书,并请求 CA 对其进行签名。有了这个证书,我就可以在任何“安全”连接到 google.com 的中间人。因此,验证步骤是 CA 运行中的一个非常重要的因素。不幸的是,目前还不清楚这个验证过程在世界各地的数百个 CA 中有多严格。
SSL/TLS 通信仅在信任的基础上工作。因特网上的每台计算机(客户机/服务器)都有一个它维护的根 CA 和中间 CA 的列表。这些是定期更新的。在 SSL 握手过程中,这被用作建立信任的参考。例如,在 SSL 握手期间,当客户端向服务器提供证书时。服务器将尝试检查颁发证书的 CA 是否在其 CA 的列表中。当它不能这样做时,它声明它无法执行证书链验证。(这是答案的一部分。它还查看了 友邦保险。)客户端还对它在 ServerHello 中收到的服务器证书执行类似的验证。
在 Windows 上,您可以通过 PowerShell 看到客户端和服务器的证书存储。从 PowerShell 控制台执行以下命令。
PS 证书: > ls 位置: CurrentUser StoreNames: { TrustedPublisher,ClientAuthIssuer,Root,UserDS... }