似乎没有中央的Android资源列出操作系统或默认浏览器中包含的Trusted Root CA(关于SO的相关问题),因此如何确定默认情况下手机中包含哪些内容?

由于过去几年中遭到破坏的根证书数量以及欺诈性SSL证书数量的增加,这对于任何依赖SSL来确保安全性的人都是一个问题,否则您将不知道是否您要删除所有受信任的CA。

(未列出我的制造商或操作系统版本,因为我正在寻找适用于任何设备的通用资源或解决方案)

评论

我已使用此应用程序(需要root用户)列出和删除单个root用户证书:CACertMan或Play商店中。 guradian项目还维护了标准密钥库的编辑版本:github.com/guardianproject/cacert

先前评论中的Play商店链接错误-这是正确的一个Play商店

@Michael:谢谢您的提示,似乎我弄乱了我的复制/粘贴缓冲区(留下您的评论,因为您和eldarerathis都提供了正确的缓冲区)

#1 楼

在ICS或更高版本上,您可以在设置中进行检查。转到Settings->Security->Trusted Credentials以查看所有受信任的CA的列表,并按是否将它们包含在系统中或由用户安装进行分隔。您可以使用Bouncy Castle和/system/etc/security程序提取cacerts.bks。摘要是首先使用keytool(需要root shell)拉出捆绑包,然后可以使用Bouncy Castle列出捆绑包的内容:

shell~$ adb pull /system/etc/security/cacerts.bks`
shell~$ keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -v -list


还有如果您不想使用外壳程序,请至少尝试一个应用程序:CACertMan(需要root才能修改列表,但应该允许您在没有root的情况下查看列表)。我相信这是由于DigiNotar惨败造成的,因为当时用户没有特别简单的方法来撤销证书。由于证书在ICS上的存储方式不同,因此此应用程序仅可在运行Gingerbread(或更早版本)的设备上运行,但无论如何在ICS / JB上已过时。

评论


是的,这是因为DigiNotar。只有将根目录编辑出来(例如,中国国家CA)才需要根目录,而不是我想查看的目录(IIRC)。

–ce4
2012年7月26日14:18

@ ce4:我不记得您是否需要root才可以使用CACertMan进行浏览-我会很快检查一下。更新:认为您是对的,如果我拒绝它的root访问权限,则可以列出它们,只是无法保存修改后的列表。我会澄清这一点。

–eldarerathis
2012年7月26日14:18



有没有一种(rooted)方法来从shell编辑/添加证书?设置方法声称可以在我的平板电脑上成功,但实际上并未安装证书。

–迈克尔
2014年4月10日17:19