android - 使用 Android 密钥库提供程序进行客户端身份验证
问题描述
我有一个在 Android 设备上安装证书的用例,并将该证书与 Https 请求一起发送,以便与服务器进行客户端身份验证。我使用的是自签名证书,所以当我安装 .pfx 文件时,它通常以用户凭据结束。因此,为了从用户存储中获取证书,我尝试了这样的方法:
try
{
var certs = KeyChain.GetCertificateChain(Context, "Test");
var pk = KeyChain.GetPrivateKey(Context, "Test");
}
catch (Exception)
{
}
但是运行上面的代码给了我一个错误:
java.lang.IllegalStateException: uid 10088 doesn't have permission to access the requested alias
所以在做了一些研究之后,我发现我们必须添加下面的代码行让用户从对话框中选择证书,这相当于授予使用“测试”证书的权限:
KeyChain.ChoosePrivateKeyAlias(mainActivity, this, null, null, null, -1, "Test");
但是对于我的用例,用户不应该知道后台活动。所以我的问题是:有什么方法可以跳过KeyChain.ChoosePrivateKeyAlias
通话并始终授予使用“测试”证书的权限,这样用户就不必选择了。或者根据这篇文章,我必须使用 Android Keystore 提供程序。但是我没有找到用于客户端身份验证的 Android Keystore 提供程序的任何示例。
解决方案
推荐阅读
- python - Django:ValidationError ['ManagementForm 数据丢失或已被篡改']
- macos - 如何像 Python3 一样在 MacOS X 终端中运行 Lua?
- lua - 如何在LUA中重新启动游戏时停止声音
- excel - 如何在网页提取期间按钮自动点击网页后提取数据
- c - 为什么我的自动变量总是给出 0 而不是垃圾值?
- python - 如何使用 python 查找 tiff 文件中存在的图像(页面)的原始格式?
- javascript - 为什么单击单个删除按钮时除了一个图像之外的所有图像都被删除?
- python - 调试我的二叉树搜索和算法
- android - 数据绑定在动态功能模块中不起作用,在引用绑定的视图时导致空指针异常
- c - 编译 HPC Challenge Benchmark 时出现未声明的变量错误