某些安卓手机获取不到 https 的请求数据 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
34091136
V2EX    Android

某些安卓手机获取不到 https 的请求数据

  •  
  •   34091136 2018-05-28 11:31:53 +08:00 18042 次点击
    这是一个创建于 2744 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,有人知道这样是什么情况吗?

    第 1 条附言    2018-05-28 17:17:09 +08:00
    具体详情是这样的:
    我们配置了 ssl 证书,用 https 访问接口,但是在某些安卓手机,比如 vivo 的,就访问不了后台的数据,但是换成 http 请求就可以了
    第 2 条附言    2018-05-28 19:37:28 +08:00
    对于一些评论,我再添加一下
    Android 4.0.4 RSA 2048 (SHA256) TLS 1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH secp256r1 FS
    Android 4.1.1 RSA 2048 (SHA256) TLS 1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH secp256r1 FS
    Android 4.2.2 RSA 2048 (SHA256) TLS 1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH secp256r1 FS
    Android 4.3 RSA 2048 (SHA256) TLS 1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDH secp256r1 FS
    Android 4.4.2 RSA 2048 (SHA256) TLS 1.2 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp256r1 FS
    Android 5.0.0 RSA 2048 (SHA256) TLS 1.2 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp256r1 FS
    Android 6.0 RSA 2048 (SHA256) TLS 1.2 > http/1.1 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp256r1 FS
    对于 SNI 是支持的,现在问题出现于 android 版本 6.0 以下的都访问不了接口,这个不关设备的事
    38 条回复    2018-05-30 12:38:15 +08:00
    RockOrRoll
        1
    RockOrRoll  
       2018-05-28 12:34:44 +08:00 via iPhone
    如果是抓包的话,7.0 以上做了限制
    34091136
        2
    34091136  
    OP
       2018-05-28 16:00:02 +08:00
    @RockOrRoll 不是抓包,而是访问
    KyonLi
        3
    KyonLi  
       2018-05-28 16:43:00 +08:00   2
    不知道为什么看到这样的提问就特别来气
    huanchena
        4
    huanchena  
       2018-05-28 16:44:08 +08:00
    @KyonLi +1
    34091136
        5
    34091136  
    OP
       2018-05-28 17:06:02 +08:00
    @KyonLi 为什么?
    honeycomb
        6
    honeycomb  
       2018-05-28 17:15:24 +08:00 via Android   1
    @34091136 他大概是觉得你没说清楚问题,觉得这样的没有说清楚的问题不值得被解答,还占了他的视线吧。
    KomeijiSatori
        7
    KomeijiSatori  
       2018-05-28 17:18:58 +08:00
    可能是低版本 Android 不支持 SNI ?
    imnpc
        8
    imnpc  
       2018-05-28 17:39:20 +08:00
    用手机浏览器打开 https 的域名 看有没有报错 一般可能和楼上说的 SNI 有关系
    3dwelcome
        9
    3dwelcome  
       2018-05-28 17:44:11 +08:00
    有很多可能性,有可能服务器指定的加密算法 cipher suite,客户端不支持。
    也有可能是楼上说的 SNI 问题,具体要看服务器的日志,不能一概而论的。
    Servo
        10
    Servo  
       2018-05-28 17:49:38 +08:00
    证书链不全?密码套件兼容没做好?
    zjp
        11
    zjp  
       2018-05-28 17:58:38 +08:00 via Android   1
    来气 +1
    看到这问题的反应: "获取不到 https" -> 这没理由的事情嘛,说的应该是 7.0 以上的抓包问题。之后楼主添加附言说明了是配置证书的问题。这次说的是服务器上的证书还是 APP 的证书,是浏览器不能访问还是 APP …还有 vivo 的系统版本,还得我们继续猜。
    Vindroid
        12
    Vindroid  
       2018-05-28 18:05:07 +08:00
    android 上浏览器能正常访问 https 的网页么?
    34091136
        13
    34091136  
    OP
       2018-05-28 19:28:03 +08:00
    @zjp 好吧,对不起了
    34091136
        14
    34091136  
    OP
       2018-05-28 19:38:21 +08:00
    @zjp 因为这个不涉及到抓包,配置证书没有问题的,我只是想告诉更多的信息
    fengleidongxi
        15
    fengleidongxi  
       2018-05-28 19:51:47 +08:00
    是不是和证书有关?
    rb6221
        16
    rb6221  
       2018-05-28 20:56:53 +08:00 via Android
    webview 吗,还是 api 请求?
    CodingPuppy
        17
    CodingPuppy  
       2018-05-28 21:13:43 +08:00
    tls 版本太低,服务器未适配?
    CodingPuppy
        18
    CodingPuppy  
       2018-05-28 21:15:12 +08:00
    好像 4.4 以下的 android 默认 tls1.0,服务器需要配置,或者安卓修改使用 1.2 版本
    h4lbhg1G
        19
    h4lbhg1G  
       2018-05-28 22:03:31 +08:00
    secp256r1 换成 138 还是多少 再试试
    34091136
        20
    34091136  
    OP
       2018-05-28 22:43:55 +08:00
    @h4lbhg1G 我好像所有的都上了
    34091136
        21
    34091136  
    OP
       2018-05-28 22:44:18 +08:00
    @CodingPuppy tls1.0 我也配置了
    34091136
        22
    34091136  
    OP
       2018-05-28 22:44:37 +08:00
    @janus77 API 请求
    yrom
        23
    yrom  
       2018-05-28 22:54:23 +08:00
    这些手机连接失败总有报错吧? log 有没有
    honeycomb
        24
    honeycomb  
       2018-05-28 23:07:32 +08:00 via Android
    @34091136 要不要先排除法做一下:
    1,用模拟器 /aosp 的 6.0 以下版本能复现故障吗
    2,上述模拟器 /aosp 调用 getSupportedCipherSuites 得到的结果和开头的“某些手机”冲突吗?

    另外 ecdhe_rsa_aes128_gcm_sha256 似乎是 Android5.0 或以上才支持
    h4lbhg1G
        25
    h4lbhg1G  
       2018-05-28 23:29:45 +08:00
    @34091136 #20 如果我没记错 nginx openssl 在处理多个配置时有 bug,只能用最高的那个设置 你试试只配置最低的那档,不配置多个
    VYSE
        26
    VYSE  
       2018-05-29 01:57:47 +08:00
    Let's Encrypt CA? 是有些老机型没有 trust 他家导致 SSL error
    dandycheung
        27
    dandycheung  
       2018-05-29 08:35:40 +08:00 via Android
    貌似 4.x 版本的系统,TLS 的支持各厂商不太一样。
    salmon5
        28
    salmon5  
       2018-05-29 08:46:24 +08:00 via Android
    又是 let's encrypt 惹的祸
    34091136
        29
    34091136  
    OP
       2018-05-29 11:34:14 +08:00
    @VYSE comodo 的证书
    34091136
        30
    34091136  
    OP
       2018-05-29 11:34:58 +08:00
    @honeycomb 6.0 以下都复现,
    34091136
        31
    34091136  
    OP
       2018-05-29 11:35:42 +08:00
    @h4lbhg1G 具体配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;这个吗?
    VYSE
        32
    VYSE  
       2018-05-29 11:37:24 +08:00
    @34091136 #29 实测下看 exception 就清楚了, 的确老机器某些证书会缺失.
    h4lbhg1G
        33
    h4lbhg1G  
       2018-05-29 11:56:08 +08:00
    @34091136 #31 本来我想说的是 ssl_ecdh_curve prime256v1。是不是浏览器可以访问接口,但是客户端获取不到数据?而且用了 okhttp? 我知道的只有这个坑。
    flyingghost
        34
    flyingghost  
       2018-05-29 12:31:22 +08:00
    给个 echo 接口放出 url 来给大家看看可能更清楚。
    hyyou2010
        35
    hyyou2010  
       2018-05-29 12:47:36 +08:00
    配置了 ssl 证书----------怎样配置的?是证书写到 app 里面的,还是发证 CA 添加到手机系统?
    814084764
        36
    814084764  
       2018-05-29 19:07:08 +08:00
    直接忽略证书校验就行了。
    但是上不了谷歌商店。
    34091136
        37
    34091136  
    OP
       2018-05-30 11:38:33 +08:00
    @hyyou2010 证书是放到 nginx 服务器上的
    hyyou2010
        38
    hyyou2010  
       2018-05-30 12:38:15 +08:00
    @34091136 客户端怎么验证证书的?比如,通过配置 CA,或者把证书写死在代码里面?

    我有过这样的经历,但是也可能是我水平不够,某个地方设置漏了导致的:配置 CA 证书等等,通过手机系统浏览器可以访问,不提示 https 证书问题,但是通过 API 接口访问就是访问不到。

    后来钻研,我的理解是:虽然配置了 CA 证书,但是 Android 系统没能传递这个信任链,所以还是不信任我们的服务器。后来是把证书验证写死在代码里面解决的。

    注意,我的理解不一定对,只是陈述我曾经的经历。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4238 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 05:33 PVG 13:33 LAX 21:33 JFK 00:33
    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