Android和证书的额外验证

时间:2011-11-17 00:46:23

标签: android ssl-certificate

我想对我在Android应用中制作的SSL连接执行额外验证。 基本上我需要能够:

  • 查看我所连接的远程主机的证书是否具有扩展验证(EV)状态
  • 找出远程端证书的根证书颁发机构。例如。我想知道它是否是VeriSign证书。

为了详细说明,我正在编写一个需要高级别安全性的客户端,而我们的组织正在所有服务器上使用VeriSign的EV证书。我希望防止任何受损的证书颁发机构,或者任何可以欺骗证书颁发机构为我们的域伪造证书的人都能够劫持该应用程序。

这是可行的,如果可以,怎么样?有没有办法从URLConnection对象或HTTPClient对象等获取有关远程端证书的更多信息?

1 个答案:

答案 0 :(得分:0)

首先:您不可能“阻止任何受损的证书颁发机构”为您的域颁发证书。如果它被泄露,他们可以发出他们想要的任何东西。您可以做的是创建一个信任存储,其中包含有限数量的可信CA证书,例如,仅限VeriSign。这样,即使相关的CA遭到入侵并为您的域颁发证书,也没关系,因为您首先不信任它。这也将照顾第二个子弹。要进行其他检查,您需要实施并安装自己的X509TrustManager。查看JSSE reference guide了解详情。