通过Chrome / Android下载管理器挂起来通过HTTPS下载文件

时间:2015-01-14 13:03:52

标签: android ssl https

通过HTTPS从安全区域下载文件时,Android Download Manager中的文件下载会挂起。它显示它将下载文件然后什么都不做。

Android 4.1.2 Jelly Bean

默认浏览器(Chrome)

有趣的是,从其他网站下载HTTPS会有效。所以没有一般​​的SSL问题。 所有公司的手机都受到影响。这不是电话问题。 所有下载都会受到影响它不是文件。 它适用于使用Firefox而不是Chrome。它适用于iOS上的chrome。

它是数千名员工的标准智能手机。 所以安装firefox不是一个选择。更新不是一种选择。

我首先想到下载管理器会丢失会话。所以我在其间放了一个调试代理。会话信息正确传递。请求看起来不错。

GET /static/documents/testfile.pdf HTTP/1.1
Host: acmeintranet.acme.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; HUAWEI G525-U00 Build/HuaweiG525-U00)     AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36
Referer: https://acmeintranet.acme.com/en/mob/ittest-page.htm
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Cookie: EdgeAccessCookie=FooFooFooFoo...

甚至响应与我从浏览器获得的响应完全相同。通过服务器和Android智能手机之间的调试代理,下载工作。对我来说,看起来差异只是SSL证书。当我在中间使用带有SSL解密的调试代理时,代理使用原始的ssl证书。 Android手机将从调试代理获得证书。

某些证书或证书类型可能存在问题?

1 个答案:

答案 0 :(得分:1)

我们确实找到了解决方案。

问题是,IP地址被用于fpr多个域。 每个域都有自己的证书。

bowser将使用SNI告诉服务器需要证书。 如果未提供该信息,服务器将发送默认证书。 在我们的例子中,这是错误的。因此证书与域名不匹配,下载挂起。

事实上,较旧的Android版本不支持SNI。

Android SSL - SNI support