使用Android密钥库提供程序进行客户端身份验证

时间:2020-05-05 23:09:02

标签: android ssl xamarin.android ssl-certificate android-keystore

我有一个使用案例,即在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调用并始终授予使用“测试”证书的权限,从而使用户不必选择。或基于this article,我必须使用Android Keystore提供程序。但是我没有找到用于客户端身份验证的Android Keystore提供程序的任何示例。

0 个答案:

没有答案