无法在Android 11上安装CA证书

16

在 Android 11 预览版上,当我尝试安装 CA 证书时出现了错误:

Intent intent = new Intent("android.credentials.INSTALL");
intent.putExtra("name", getCertName());
intent.putExtra("CERT", getCert());
startActivity(intent);

错误信息如下:

无法安装CA证书

CA证书可能会危及您的隐私,必须在“设置”中安装。

enter image description here

我没有在Android文档中找到有关此更改的任何信息。 有什么想法吗? 有什么解决方法(除了从设置手动安装)?

更新(28/4):

在问题跟踪器中发现一个错误:https://issuetracker.google.com/issues/151858120


在 Android 11 beta 1 上启动 KeyChain.createInstallIntent() 对我来说运行良好。 - M66B
@M66B 谢谢。我们尝试使用KeyChain.createInstallIntent()并选择证书文件,但仍然出现错误。您是否成功选择了证书文件而没有出现错误? - zvi
对我来说很好用(Pixel 3a XL,Android 11 beta 1)。 - M66B
@M66B 在使用 Android 11 Beta 的同一设备上仍然存在问题。请问你可以与我分享你的代码吗? - zvi
2个回答

52

我也遇到了同样的问题。

请在Android 11或11+中按照以下步骤操作。

在Android 11中,要安装CA证书,用户需要手动执行以下操作:

  1. 打开设备设置
  2. 进入“安全性”
  3. 进入“加密和凭据”
  4. 进入“从存储器安装”或“安装证书”(取决于设备)
  5. 从可用类型列表中选择“CA证书”
  6. 接受警告提示。
  7. 浏览设备上的证书文件并打开它
  8. 确认证书安装

Pixel 6 - Android 14

  1. 打开设备设置
  2. 转到安全与隐私
  3. 转到更多安全与隐私(滚动到底部)
  4. 进入“加密和凭据”
  5. 选择“从存储安装”或“安装证书”(取决于设备)
  6. 选择“CA证书”
  7. 点击“仍要安装”并验证安全性(例如拇指或PIN码)
  8. 选择您下载的证书(它可能在下载文件夹中可用)
  9. 可以看到一条提示消息“CA证书已安装”。 证书现在已安装在您的设备上。

关于“现代”三星手机

它被隐藏在设置中 -> 生物识别和安全性 -> 其他安全设置 -> 从设备存储安装 -> CA证书 -> 仍然安装


1
我不确定为什么这个答案被踩了... 我能够按照那些说明安装CA证书。 - Feedbacker
@Feedbacker,没关系。答案应该会有帮助的。 - Yogendra
3
我已经做了所有的事情,但应用程序仍然无法工作(只能在Chrome中工作)。 - SudoPlz
3
救了我的命。在“现代”的三星手机上,它被隐藏在设置 -> 生物识别和安全性 -> 其他安全设置 -> 从设备存储安装 -> CA证书 -> 仍然安装中。 - Saehun Sean Oh
可以确认它也适用于一加Nord(必须安装为Wifi证书)。谢谢! - Ecchi-Alex
显示剩余3条评论

8
Android 11企业版更新日志中有一条微小的注释,您可以在这里查看,其中提到:
“注意:在未经管理的设备上安装的应用程序或设备的个人资料中,无法再使用createInstallIntent()安装CA证书。相反,用户必须在设置中手动安装CA证书。”
听起来非常故意,普通未经管理的设备无法绕过它。您需要研究完整的Android设备管理,或向用户提供手动设置说明。
请注意,仅将您的应用程序注册为普通设备管理器应用程序是不够的。要使用剩余的DevicePolicyManager.installCaCert API,您的应用程序必须是设备或配置文件的所有者。
这意味着从Android 11+开始,您可以为仅在设备上分离和隔离的工作配置文件中使用的CA证书进行自动设置,或为预装有您的应用程序且没有其他任何内容的新设备进行自动设置。
如果您希望更改此行为,请在此处Android跟踪器中点赞并发表评论的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接