api.weixin.qq.com 有个比较严重的问题,客户端指定了若干可选密码套件,最终由服务器来决定用什么加密算法。可是微信 SSL 大概率是自己实现的,主动选择了一个并不支持的算法,然后直接返回握手失败! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
3dwelcome
V2EX    全球工单系统

api.weixin.qq.com 有个比较严重的问题,客户端指定了若干可选密码套件,最终由服务器来决定用什么加密算法。可是微信 SSL 大概率是自己实现的,主动选择了一个并不支持的算法,然后直接返回握手败!

  •  
  •   3dwelcome 2018 年 5 月 29 日 3978 次点击
    这是一个创建于 2870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如客户端默认有 ECC 椭圆加密算法,ECDHE-ECDSA-AES256-SHA 或者 ECDHE-ECDSA-AES128-GCM-SHA256,和别的算法放在一起,组成一个可选加密套件列表,加到 ClientHello 里,发到微信服务器。

    照常理,微信服务器并不应该自己选择一个不支持的算法,应该退一步,选择一个已经支持的算法,然后就可以握手成功。然而,他把不支持的 ECC 作为首选,结果自然是握手失败。

    复现方法,以证明微信 API 服务器并不支持椭圆算法:

    openssl s_client -connect api.weixin.qq.com:443 -cipher ECDHE-ECDSA-AES256-SHA


    openssl s_client -connect api.weixin.qq.com:443 -cipher ECDHE-ECDSA-AES128-GCM-SHA256


    实际场景中,很多算法比如 RSA,微信都是支持的,可是人家服务器很骄傲,偏偏就不愿意选老算法,非要选最新算法,于是握手 100 次,失败 100 次,进入死循环节奏。

    最终是在客户端把 ECC 套件去掉了,顺利用 RSA 握手传输数据,但总觉得这是微信官方代码的锅。

    6 条回复    2018-05-29 16:59:14 +08:00
    rrfeng
        1
    rrfeng  
       2018 年 5 月 29 日 via Android
    现在为了安全一般都是 prefer server side cipher suite 并且直接禁用有危险的旧算法。

    这个没毛病,除非 server 只支持有问题的旧算法。
    3dwelcome
        2
    3dwelcome  
    OP
       2018 年 5 月 29 日
    @rrfeng 问题是密码套件列表里有一大堆并不算旧的算法,服务器从里面选一个自己支持的,也比直接返回握手失败来的好。

    我现在是用 RSA(TLS_DHE_RSA_WITH_AES_128_GCM_SHA256)连接的,用着没啥问题。但是如果在 ClientHello 里,把 RSA 和 ECC 同时都塞进去,服务器就会直接返回握手失败,并主动断开连接,也是非常的郁闷。

    你不支持 ECC,那就在备选库里,挑选一个支持的加密算法多好,反正最终都是服务器来决定的。但强行断开,也未免太霸道了点。
    wr410
        3
    wr410  
       2018 年 5 月 29 日
    这种前端 SSL 接入基本上是硬件接入,也许人家的接入设备就不支持 ECC 算法 SSL 嘛。
    est
        4
    est  
       2018 年 5 月 29 日   1
    我能说我就是用这个特性做反爬的么。。。一大堆换 ip 改 http 头的的爬虫都不知道自己怎么死的。23333
    rrfeng
        5
    rrfeng  
       2018 年 5 月 29 日 via Android
    @est
    机智...
    3dwelcome
        6
    3dwelcome  
    OP
       2018 年 5 月 29 日
    @est 高手啊,还有这操作,学到了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5874 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 03:14 PVG 11:14 LAX 20:14 JFK 23:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86