https 中:
保证 接收公钥来源的正确性 是通过证书(数字签名+信息摘要)来保证的
想问下:接收的公钥究竟是来源于 1. 客户端请求服务端 获取的证书里的信息摘要 2. 客户端直接请求 CA 认证机构获取对应证书的公钥 两种情况的哪种?
如果是从 1 中获取的话,那我是否只要把证书获取,
自己使用 hash 函数加密信息摘要(自己的公钥),再用自己的私钥加密,发送给客户端
不是就可以伪造证书了吗?
1
JsonLee 2019-11-16 10:33:20 +08:00 via iPhone
在这问等别人回答自己可能已经通过搜索引擎找到答案了。先去了解一下证书的格式和怎么生成的,这个答案自然明了。
|
2
HarryQu 2019-11-16 10:45:44 +08:00 1
|
3
linwu OP 我选择的不是 问与答 的节点么,难道 V2EX 的答案不算 搜索引擎里的内容么?
|
5
chinvo 2019-11-16 12:46:39 +08:00 via iPhone
|
6
aabbcc112233 2019-11-16 12:47:52 +08:00 via Android
@chinvo 不懂就问,别太苛刻
|
7
chinvo 2019-11-16 12:49:51 +08:00 via iPhone
|
8
aabbcc112233 2019-11-16 12:52:17 +08:00 via Android
@chinvo 看了下他的提问标题,确实该!
|
9
lhx2008 2019-11-16 13:00:42 +08:00 via Android
公钥在证书里面,证书有 CA 的签名,可以用 CA 的公钥验证,CA 公钥是客户端内置的
|
10
linwu OP @chinvo 你又是如何知道我没有搜索过?如果我搜索过出来的文章解释的并不清楚,我希望到专业些的技术网站来确定,也是不允许确定的?是不是每个问题都要附带(已在搜索引擎搜索过)才能提问,你看我的问题描述觉得我是一点都没查过自己就过来问的吗?
|
11
TtiGeR 2019-11-16 15:16:45 +08:00 via iPhone
@linwu 没有批评的意思,只是作为过来人说几句。
已经查过的情况下,建议说明已经看了哪些资料,但是*具体*哪里觉得说得不清楚或是不同资料之间哪里冲突。这样大家给的回答一般也更有针对性。 至于你的问题,伪造出来的证书不是受信任的 CA 签发的话,签名是无法通过检验的。理论上讲,如果你实际控制了另一个受信任的 CA 是可以伪造证书的。但在公共互联网上是几乎不可行的,因为现在各大浏览器(和操作系统)对公共 CA 的审计和透明度要求非常高。 |
12
TtiGeR 2019-11-16 15:21:52 +08:00 via iPhone 1
当然在你自己控制的设备上,想要伪造一个证书是完全可行的,像 Fiddler 或者 Burp Suite 之类监听 HTTPS 的原理本身就是重签发(伪造)证书,之所以可以“骗”过浏览器是因为这些软件会让你信任软件生成的根证书。
也可以参考一下别人的答案: https://security.stackexchange.com/questions/68198/cant-i-forge-an-ssl-certificate |