排除SSL验证的故障

排除SSL验证的故障

本页面介绍了如何排除安卓应用程序不验证SSL证书的问题。请参阅http://www.kb.cert.org/vuls/id/582497以了解更多有关此问题的背景。

故障排除步骤

要对以上链接中所述的安卓应用程序不验证SSL证书的问题进行故障排除,请执行以下操作:

  1. 验证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
  2. 验证SSL流量来自以上库之一后,请参阅所影响库的版本的CVE信息;如果可用,请升级到库的修复版本。

    • 如果您的所有未验证SSL流量位于以上库之一中,请升级库并将应用程序重新提交到亚马逊。
    • 如果所有未经验证的SSL流量未包含在上述库之一中,为了保护您自己的流量,请采取预防措施来保护客户的数据。

      如果您使用购买的SSL证书来完成此任务,请将您所有依赖于SSL的代码包装到try/catch块中,以防止在出现SSLException时,应用程序通过网络发送或接收数据。

    • 如果您自己对SSL流量进行签名,请将您的CA颁发机构证书存储到应用程序的资产目录中,然后使用CA颁发机构证书在try/catch块中验证SSL流量,如果证书不可信,则不允许流量。有关安全安卓应用程序设计和编码的信息,包括如何验证自签名SSL流量的示例,请参阅http://www.jssec.org/dl/android_securecoding_en.pdf中的5.4一节。
    • 如果您有任何已知CA颁发机构证书用于自己的流量,为防止基于受损CA颁发机构主机发起的攻击,请固定基于这些CA颁发机构的SSL证书。

有关此漏洞的更多信息,请参阅http://www.kb.cert.org/vuls/id/582497https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=134807561

有关正确验证SSL流量的文档,请参阅http://developer.android.com/training/articles/security-ssl.html

有关如何在您的应用程序和其他平台的应用程序中固定SSL证书的更多信息,请参阅https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning