我自己是否可以将服务器证书复制到另一台服务器以滥用它。示例:攻击者访问https网站X并复制X.509证书。他将被盗的X.509证书放在他自己的服务器上,并希望值得信赖。
当然,攻击者没有私钥,但私钥只需要解密来自客户端的加密消息。在认证方面,没有理由怀疑。或?
服务器使用X.509证书进行响应。客户端接收证书并使用存储的根证书成功验证。为什么服务器不能被认证?只有当客户端使用公钥发送加密消息时,服务器才能解密消息 - 因为他不拥有私钥。
到目前为止是对的?
答案 0 :(得分:4)
只有当客户端使用公钥发送加密邮件时,服务器才能解密邮件 - 因为他没有私钥。
服务器还需要私钥来签署发送给客户端的消息。
SSL / TLS握手协议本身有效地将这种经过身份验证的消息发送到客户端。如果私钥不可用,则在发送任何“真实”有效负载消息之前,此步骤将失败。
答案 1 :(得分:1)
为什么不对服务器进行身份验证?
证书与域名绑定。
Web浏览器将下载证书并对其进行验证。验证中的一个步骤是将证书所用的域与浏览器实际下载的域进行比较。如果存在不匹配(并且会有,因为攻击者在他们自己的域上,而不是原始站点的域),那么浏览器将向用户显示证书错误并要求他们拨打关于是否接受的电话它
您可能习惯于在错误的Web服务器配置中看到这一点。当您尝试访问“example.com”时,曾经看到过“这个证书是针对www.example.com”的错误吗?
当然,攻击者没有私钥,但私钥只需要解密来自客户端的加密消息。
公钥/私钥对还有其他用途。在这种情况下,私钥对证书进行签名,公钥对其进行验证。没有涉及加密。 (你所描述的更像是普通的加密方案,比如RSA。)
答案 2 :(得分:0)
不,证书是一个公共元素,它只是一种将公钥绑定到名称(此处为DNS名称)的方法。在身份验证过程中(在TLS协议中),服务器发送其证书以及使用相关私钥对某些数据进行签名。为了验证服务器是证书的合法所有者,客户端必须使用发送的证书验证此签名的有效性。流氓服务器可以尝试使用证书但没有私钥就无法证明它是真正的持有者。