需要获取设备上安装的所有用户CA证书的列表。我们可以通过运行来获取系统证书
adb shell cat /system/etc/security/cacerts/* | grep Issuer:
是否也有类似的方法来获取用户证书?如果不可能,我们可以至少打开显示设备中安装 CA 证书的活动吗?
显示用户添加的证书的活动是
com.android.settings.TRUSTED_CREDENTIALS_USER
。
证书存储在
/data/misc/keychain/cacerts-added
文件夹中
设置->安全->可信凭据。转到“用户”选项卡查看用户安装的 CA。
如果您想在没有 ADB 的 Android 应用程序中检索 CA 证书,可以这样做。
这是一些示例 (Kotlin) 代码,用于列出 Android 设备上所有用户安装的 CA 证书。 如果您将 “用户” 更改为 “系统”,您将获得所有预安装的 CA 证书:
val userInstalledCaCertificates: List<X509Certificate> = try {
val keyStore = KeyStore.getInstance("AndroidCAStore")
keyStore.load(null, null)
val aliasList = keyStore.aliases().toList().filter { it.startsWith("user") }
aliasList.map { keyStore.getCertificate(it) as X509Certificate }
} catch (e: Exception) {
emptyList()
}