2011-11-17 70 views
1

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

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

为了详细阐述一下,我正在编写一个需要高级别安全性的客户端,并且我们的组织正在所有服务器上使用来自VeriSign的EV证书。我想要阻止任何受到威胁的证书颁发机构,或者任何能够欺骗证书颁发机构伪造我们域的证书的人员能够劫持应用程序。

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

回答

0

首先:您不可能“阻止任何受损的证书颁发机构”为您的域颁发证书。如果它被破坏,他们可以发布任何他们想要的东西。你可以做的是创建一个有限数量的可信CA证书的信任存储库,比如只有VeriSign。这样,即使相关的CA受到攻击并为您的域颁发证书,也无所谓,因为您首先不信任它。这也会照顾第二颗子弹。要进行额外的检查,您需要实施并安装您自己的X509TrustManager。详情请查阅JSSE reference guide