我想在客户端设备(运行Xamarin.Forms的iOS或Android手机)上创建非对称密钥对,并创建证书签名请求以发送到运行我的数据库的Linux服务器上的ASP.NET Core Restful API。为此,我正在使用Portable Bouncy Castle和API上的网络核心版本。
发送的CSR将由自定义CA通过WebAPI签名,并添加到我的数据库的证书表中,这样,当设备发送GET请求时,它就可以检索它(一次使用激活密钥来验证发布的CSR csr以及已签名证书的检索)。
使用此方法,我创建了一个私钥和CSR请求,并将csr转换为可以发布到API的字符串。API收到此消息后,会将其放置在脚本访问的文本文件中,以使用CA证书和CA密钥对其进行签名,从而创建一个client-cert.pem文件。这将被读取为文本并存储在数据库中,以便设备可以检索它。
此后,我想将证书和私钥存储在设备的密钥库中,但是当我使用Bouncy Castle创建密钥对时,它的类型为AsymmetricCipherKeyPair。
我将如何将这些项目存储在密钥库中,以便在连接到数据库时可以对其进行访问以对客户端进行身份验证?我目前不确定Xamarin.Forms如何处理密钥库以及如何在其中存储密钥/证书。
如果可以找到将AsymmetricCipherKeyPair转换为字符串的方法,则可以使用Xamarin.Essentials:Secure Storage将这些密钥存储在KeyStore中:
要将给定密钥的值保存在安全存储中:
try
{
await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
// Possible that device doesn't support secure storage on device.
}
要从安全存储中检索值:
try
{
var oauthToken = await SecureStorage.GetAsync("oauth_token");
}
catch (Exception ex)
{
// Possible that device doesn't support secure storage on device.
}
请参阅:AsymmetricCipherKeyPair和/ bouncy-castle-rsa-transform-keys-in-string格式
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句