【发布时间】:2020-02-23 04:39:51
【问题描述】:
我知道证书验证是由浏览器通过验证证书上的签名并验证它是否已由受信任的 CA 签名来完成的。
但是如果我想让中间人附加,通过更改发送给客户端的服务器证书,用我的公钥发送我的假证书,这样我就可以解密客户端发送给我的流量,然后复制-粘贴原始证书签名“已由受信任的 CA 签名”?
CA 是否使用原始服务器公钥来生成其签名?
希望我需要一些详细的材料来理解 关于整个公共密码学和 SSl 过程????
谢谢
【问题讨论】:
-
欢迎来到 SO,请阅读 tour 和 How to Ask。这是一个针对特定问题的网站,而不是“入门”或培训或教程。您需要进行网络搜索并阅读维基百科等网站,以了解 SSL 证书的工作原理,以及中间人攻击如何使用 HTTPS 连接。您可能还想搜索讨论论坛或聊天室,您可以在其中与其他人讨论此问题。
-
您不能只更改公钥,然后复制粘贴原始签名,因为签名涵盖了整个证书——它与您修改后的证书不匹配。您可以做的(以及某些权威机构所做的 操作)是在您的控制下安装“受信任”CA,并使用它来生成新证书,从而给用户一种受信任连接的错觉,即事实上,任何颁发替换证书的人都可以窥探。证书固定(嵌入特定证书并在不匹配时拒绝连接)是对此的一种防御。
-
这是Information Security 的更多主题。已经有类似的问题了,比如Why is faking SSL certificate difficult?。
标签: ssl ssl-certificate