默认情况下,Android中包含哪些受信任的根CA?


21

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

在过去的几年中,由于根证书的数量被泄露,以及欺诈性的SSL证书的创建,对于依赖SSL来确保安全性的任何人来说,这都是一个问题,否则您将不知道是否要删除它任何信任的CA

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


1
我已使用此应用程序(需要root用户)列出和删除单个root用户证书:CACertManPlay Store上。guradian项目还维护了标准密钥库的编辑版本:github.com/guardianproject/cacert
ce4 2012年

在之前的评论Play商店的链接是错误的-这里是正确的Play商店
迈克尔Kohne

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

Answers:


17

在ICS或更高版本上,您可以在设置中进行检查。转到Settings->Security->Trusted Credentials查看所有受信任的CA的列表,并按它们是系统附带的还是用户安装的分开。

早期版本的Android将其证书保存/system/etc/security在一个加密的捆绑包中cacerts.bks,您可以使用Bouncy Castle和该keytool程序将其提取。摘要是首先使用adb(需要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年

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

有没有一种(rooted)方法来从shell编辑/添加证书?设置方法声称可以在我的平板电脑上成功,但实际上未安装证书。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.