排除SSL验证故障
排除SSL验证故障
本页面介绍了如何排除Android应用未验证SSL证书的问题。请参阅http://www.kb.cert.org/vuls/id/582497(仅提供英文版),了解有关此问题的背景的更多信息。
故障排除步骤
要对以上链接中所述的Android应用未验证SSL证书的问题进行故障排除,请执行以下操作:
-
验证SSL流量来自以下库:
- Flurry CVE-2014-6024
- Chartboost CVE-2014-6025
- AdColony CVE-2014-5524
- MoMinis/Playscape CVE-2014-5525
- TapJoy CVE-2014-5527
- InMobi CVE-2014-5526
- Appsflyer CVE-2014-5528
- Zopim CVE-2014-5530
- Fiksu CVE-2014-5814
-
验证SSL流量来自以上库之一后,请参阅所影响库的版本对应的CVE信息;如果找到了该信息,请升级到库的修复版本。
- 如果所有未经验证SSL流量位于以上库之一中,请升级该库并向亚马逊重新提交应用。
-
如果所有未经验证的SSL流量未包含在上述库中,为了保护您自己的流量,请采取预防措施来保护客户的数据。
如果使用购买的SSL证书来完成此任务,请将所有依赖于SSL的代码包装到try/catch块中,以防止在出现SSLException时,应用通过网络发送或接收数据。
- 如果您自己签名了SSL流量,请将您的CA颁发机构证书存储到应用的资产目录中,然后使用CA颁发机构证书在try/catch块中验证SSL流量。如果证书不可信,则不允许通信。有关安全Android应用设计和编码的信息,包括如何验证自签名SSL流量的示例,请参阅http://www.jssec.org/dl/android_securecoding_en.pdf(仅提供英文版)中的5.4章节。
- 如果您有任何已知CA颁发机构证书用于自己的流量,为防止基于受损CA颁发机构主机发起的攻击,请导入基于这些CA颁发机构的SSL证书。
有关此漏洞的更多信息,请参阅 http://www.kb.cert.org/vuls/id/582497(仅提供英文版)。
有关如何正确验证SSL流量的文档,请参阅http://developer.android.com/training/articles/security-ssl.html。
有关如何在您的应用和其他平台的应用中导入SSL证书的更多信息,请参阅https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning(仅提供英文版)。