想象一下,我们有一个应用程序正在尝试使用 SSL 建立与服务器的安全连接。现在我们希望用户使用他存储在安全密钥库中的客户端证书来验证自己。
因此,如果我正确阅读了本规范,则服务器在握手协议期间发送其证书,并且能够通过证书请求从客户端请求证书(如果有必要的话)。现在用户将他的证书发送到服务器,就像服务器之前所做的那样,这意味着明文,因为还没有交换密钥。
我现在没有得到的是,如果客户端证书以明文形式发送并且证书未绑定到特定设备并且其证书中的客户端公钥不用于生成用于加密的对称密钥稍后,假设攻击者与受害者位于同一个无线局域网中,为什么攻击者无法嗅探客户端和服务器之间的握手协议?这样他就可以看到客户证书,复制它并自己使用它。
那么如何预防这种情况呢?由于攻击者没有签名证书的私钥,因此攻击者当然无法更改证书的某些数据,但是复制证书以窃取他的受害者身份还不够吗?我在这里想念什么?证书到底是绑定到设备上的吗?但我认为它不会,因为它只包含一些关于客户本人和他的公钥的信息。
我认为在交换对称密钥并加密应用程序数据时,在握手协议之后发送客户端证书会是一个更好的主意。我知道您还可以使用其他用户凭据,例如用户名和密码,但我现在只是在谈论客户端证书的安全性。
所以你怎么看?