V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
34091136
V2EX  ›  Android

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

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

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

    第 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
    是不是和证书有关?
    janus77
        16
    janus77  
       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   ·   实用小工具   ·   882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.