首页 > 解决方案 > 使用 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 提供程序的任何示例。

标签: androidsslxamarin.androidssl-certificateandroid-keystore

解决方案


推荐阅读