客户端证书是否可以识别不相关网站的所有者?

信息安全 tls 证书 隐私 网页浏览器 网络
2021-08-09 11:01:27

如果我在浏览器中安装客户端证书,哪些网站可以看到有关此客户端证书或颁发它的 CA 的任何信息?

我曾经访问过一个 ssl 诊断站点,该站点立即报告了来自我的一个客户端证书的信息,包括我的姓名(我已将其放入颁发客户端证书的 CA 中)。

这与以下内容有关:保护 TLS 客户端证书 中的信息但这与证书如何发送到证书所针对的网站有关。我问的是不相关的网站。

1个回答

有趣的问题!我碰巧有一个充满测试证书的浏览器,以及许多要连接的测试站点!让我们测试一下!

(跳到底部进行总结)

调查

在火狐上测试

Firefox 加载了证书,一个需要 TLS 客户端证书的测试站点,Wireshark。

我重新启动了 Firefox 以获得一个干净的会话。然后我输入了一个要求 TLS 客户端证书的网站的 URL,并在我收到“请选择证书”弹出窗口后停止。这是到目前为止的wireshark数据包捕获:

来自 Firefox 的相互身份验证 TLS 握手的 Wireshark 数据包捕获

注意事项:

客户端发送一个通用的 ClientHello。

服务器发送一个包含服务器证书的 ServerHello,以及一个对客户端证书的请求。

此时 Firefox 会弹出一个窗口让我选择要发送的证书。如果我点击取消,则没有进一步的网络流量,即除了不包含个人身份信息的通用 ClientHello 之外,没有任何内容发送到服务器。(除了支持的密码套件列表,它可用于确定您使用的浏览器的版本)

注意1:我在浏览器中仅使用一个客户端证书尝试了相同的测试,我什至在证书选择弹出窗口中单击了“记住此决定”,并得到了相同的结果。因此,如果不单击“确定”,我将无法重现您将私人数据发送到服务器的结果。

注意 2:正如@JohnWu 在评论中指出的那样,您可以在设置中更改 Firefox 的行为,在这种情况下,它的行为方式与下面的 Chrome 相同。默认设置为:

Firefox 默认设置是提示您输入证书还是为您选择一个

在 Chrome 上测试

与上述完全相同的测试场景,但使用的是 Chrome。(请注意,Chrome 没有自己的证书存储,而是使用您的 Windows 证书存储,这比 Firefox 操作起来有点棘手。此处未包含详细信息。)

答对了!!Chrome 会立即开始将客户端证书发送到服务器,而无需任何用户提示。该证书被服务器拒绝,因为该证书用于不同的网站。是的,这是一个隐私问题。

Wireshark 从 Chrome 捕获相互身份验证 TLS 握手的数据包

注意1:@JohnWu 指出可以更改此行为并让 Chrome 提示,但这不是默认行为,您必须深入了解 Windows 组策略 (GPO) 才能做到这一点。

注意 2:这可能取决于您的 Windows 操作系统的配置方式,因为 Chrome 倾向于从 IE 继承许多安全设置。

概括

在我使用测试环境中的两种浏览器(Firefox 和 Chrome)进行测试时,Chrome 表现出您描述的行为(无论客户端证书是否来自不同站点,都会在服务器上发送垃圾邮件),而 Firefox 礼貌地要求我确认要发送哪个证书,即使我只安装了一个证书。

结论:如果您关心隐私,那么 Chrome 不是您的朋友。请改用 Firefox。