V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
linwu
V2EX  ›  问与答

HTTPS

  •  
  •   linwu · 2019-11-16 10:21:07 +08:00 · 2058 次点击
    这是一个创建于 1868 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https 中:

    保证 接收公钥来源的正确性 是通过证书(数字签名+信息摘要)来保证的
    

    想问下:接收的公钥究竟是来源于 1. 客户端请求服务端 获取的证书里的信息摘要 2. 客户端直接请求 CA 认证机构获取对应证书的公钥 两种情况的哪种?

     如果是从 1 中获取的话,那我是否只要把证书获取,
     自己使用 hash 函数加密信息摘要(自己的公钥),再用自己的私钥加密,发送给客户端
     不是就可以伪造证书了吗?
    
    12 条回复    2019-11-16 15:21:52 +08:00
    JsonLee
        1
    JsonLee  
       2019-11-16 10:33:20 +08:00 via iPhone
    在这问等别人回答自己可能已经通过搜索引擎找到答案了。先去了解一下证书的格式和怎么生成的,这个答案自然明了。
    HarryQu
        2
    HarryQu  
       2019-11-16 10:45:44 +08:00   ❤️ 1
    https://s2.ax1x.com/2019/11/16/MwsGrT.png

    我之前关于这个问题做的笔记。 笔记来源 <图解 HTTP>
    linwu
        3
    linwu  
    OP
       2019-11-16 10:48:02 +08:00
    我选择的不是 问与答 的节点么,难道 V2EX 的答案不算 搜索引擎里的内容么?
    linwu
        4
    linwu  
    OP
       2019-11-16 10:48:38 +08:00
    @HarryQu 感谢
    chinvo
        5
    chinvo  
       2019-11-16 12:46:39 +08:00 via iPhone
    @linwu #3 不算啊,因为搜索引擎里早就有这个问题的答案了,你自己搜索就知道了,v2 还要别人回答

    你这思想,很伸手党
    aabbcc112233
        6
    aabbcc112233  
       2019-11-16 12:47:52 +08:00 via Android
    @chinvo 不懂就问,别太苛刻
    chinvo
        7
    chinvo  
       2019-11-16 12:49:51 +08:00 via iPhone
    @aabbcc112233 #6 提问的智慧,别太懒惰

    提问没错,下面有人指出可以搜索之后楼主竟然把对方批判一番实在过于伸手党
    aabbcc112233
        8
    aabbcc112233  
       2019-11-16 12:52:17 +08:00 via Android
    @chinvo 看了下他的提问标题,确实该!
    lhx2008
        9
    lhx2008  
       2019-11-16 13:00:42 +08:00 via Android
    公钥在证书里面,证书有 CA 的签名,可以用 CA 的公钥验证,CA 公钥是客户端内置的
    linwu
        10
    linwu  
    OP
       2019-11-16 13:19:46 +08:00
    @chinvo 你又是如何知道我没有搜索过?如果我搜索过出来的文章解释的并不清楚,我希望到专业些的技术网站来确定,也是不允许确定的?是不是每个问题都要附带(已在搜索引擎搜索过)才能提问,你看我的问题描述觉得我是一点都没查过自己就过来问的吗?
    TtiGeR
        11
    TtiGeR  
       2019-11-16 15:16:45 +08:00 via iPhone
    @linwu 没有批评的意思,只是作为过来人说几句。

    已经查过的情况下,建议说明已经看了哪些资料,但是*具体*哪里觉得说得不清楚或是不同资料之间哪里冲突。这样大家给的回答一般也更有针对性。

    至于你的问题,伪造出来的证书不是受信任的 CA 签发的话,签名是无法通过检验的。理论上讲,如果你实际控制了另一个受信任的 CA 是可以伪造证书的。但在公共互联网上是几乎不可行的,因为现在各大浏览器(和操作系统)对公共 CA 的审计和透明度要求非常高。
    TtiGeR
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5411 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:58 · PVG 15:58 · LAX 23:58 · JFK 02:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.