允许 Android 4 设备连接到 Apache HTTPS

允许 Android 4 设备连接到 Apache HTTPS

我最近更新了我为客户维护的服务器上的 HTTPS 站点证书,并且在安装时加强了 apache ssl 设置,特别是支持的协议和密码(例如,我最终删除了 SSL3 等)

不幸的是,不到一小时,我就接到了客户的电话,抱怨出现了问题。客户有一批现场销售人员(大约 50 人分布在美国和加拿大各地),他们使用公司发放的 Android 平板电脑,平板电脑上装有定制的订单输入和客户跟踪应用程序。该应用程序停止工作 - 我的客户现在无法接收订单。这相当关键,因为仅一天后,他们的订单履行就拖欠了 10 多万美元。

我跟踪到的第一件事是,Android 4(DigiCert Global Root G2)默认不信任新的根 CA 证书。我在我拿到的一台样机上安装了该证书,现在至少 chrome 可以连接到网站了。但是应用程序仍然无法连接到服务器。每次尝试与服务器通信时,它都会抛出“对等端关闭连接”错误。

我猜问题出在支持的密码套件上 - 我猜,原生 Android 代码不支持服务器上安装的任何密码。因此到目前为止我有两个问题:

  1. 我需要在服务器上启用哪些密码才能允许 Android 4 原生应用程序连接?据我所知,该应用程序用于java.net.HttpURLConnection连接以删除主机。

  2. 我还需要研究/启用什么才能使其正常工作?

请注意,升级到较新版本的 Android 不是一个选择,因为成本对我的客户来说太高了。我今天和明天(周六和周日)必须解决这个问题 - 否则整个客户的业务都会面临风险。

更新:以下是当前启用的密码/协议:

SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

答案1

预先说明:我确实有一个正在运行该应用程序的示例设备。

好的,经过几个小时的努力,在绝望之中,我开始更改应用程序中的设置,将其指向我可以访问的其他各种服务器 - 我终于得到了一个连接正常的服务器 - 所以我复制了协议和密码设置从该服务器到有问题的服务器,更改了应用程序中的设置以指回原始服务器 - 并且它起作用了。

作为参考,以下是设置:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DHE-RSA-DES-CBC-SHA:!DHE-RSA-CAMELLIA256-SHA:!DHE-RSA-CAMELLIA128-SHA:!DHE-DSS-CBC-SHA:!DHE-RSA-DES-CBC3-SHA

由于我不得不使用弱密码,因此 SSL Labs 的评分从 A+ 降到了 A-,但这是可以理解的。另外,出于某种原因,初始连接需要很长时间(几秒钟) - 但至少可以发送订单 :)

相关内容