在 android/iOS Keystore C# 上存储私钥和证书 (.pem)
Storing private key and certificate (.pem) on android/iOS Keystore C#
我想在客户端设备(iOS 或 Android phone 运行 Xamarin.Forms 上创建一个非对称密钥对并创建一个证书签名请求发送到 linux 服务器 运行 我的数据库上的 ASP.NET 核心 Restful API。为此,我在 API.
上使用了 Portable Bouncy Castle 和 net core 版本
发送的 CSR 将由自定义 CA 通过 Web 签名API 并添加到我的数据库上的证书 Table,这样当设备发送 GET 请求时,它可以检索它(一次性激活密钥用于验证 csr 的 post 以及签名证书的检索)。
使用 this,我创建了一个私钥和 CSR 请求,并将 csr 转换为可以发布到 API 的字符串。当 API 收到此消息时,它将其放置在脚本访问的文本文件中,以使用 CA 证书和 CA 密钥对其进行签名,从而创建一个 client-cert.pem 文件。这将被读取为文本并存储在数据库中,以便设备可以检索它。
在此之后,我想将证书和私钥存储在设备的密钥库中,但是由于我使用 Bouncy Castle 创建密钥对,它的类型为 AsymmetricCipherKeyPair。
我将如何将这些项目存储在密钥库中,以便在连接到数据库时可以访问它以对客户端进行身份验证?我目前不确定 Xamarin.Forms 如何处理密钥库以及如何在其中存储 keys/certificates。
如果您能找到将 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 and /bouncy-castle-rsa-transforming-keys-into-a-string-format
我想在客户端设备(iOS 或 Android phone 运行 Xamarin.Forms 上创建一个非对称密钥对并创建一个证书签名请求发送到 linux 服务器 运行 我的数据库上的 ASP.NET 核心 Restful API。为此,我在 API.
上使用了 Portable Bouncy Castle 和 net core 版本发送的 CSR 将由自定义 CA 通过 Web 签名API 并添加到我的数据库上的证书 Table,这样当设备发送 GET 请求时,它可以检索它(一次性激活密钥用于验证 csr 的 post 以及签名证书的检索)。
使用 this,我创建了一个私钥和 CSR 请求,并将 csr 转换为可以发布到 API 的字符串。当 API 收到此消息时,它将其放置在脚本访问的文本文件中,以使用 CA 证书和 CA 密钥对其进行签名,从而创建一个 client-cert.pem 文件。这将被读取为文本并存储在数据库中,以便设备可以检索它。
在此之后,我想将证书和私钥存储在设备的密钥库中,但是由于我使用 Bouncy Castle 创建密钥对,它的类型为 AsymmetricCipherKeyPair。
我将如何将这些项目存储在密钥库中,以便在连接到数据库时可以访问它以对客户端进行身份验证?我目前不确定 Xamarin.Forms 如何处理密钥库以及如何在其中存储 keys/certificates。
如果您能找到将 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 and /bouncy-castle-rsa-transforming-keys-into-a-string-format