首页 > 解决方案 > 无法将证书/密钥添加到 Xamarin iOS 钥匙串中

问题描述

我正在尝试使用 SecKeyChain 将我的证书和私钥添加到 iOS 钥匙串中。我尝试了 SecKeyChain.Add() 和 SecKeyChain.AddIdentity(),但第一个返回我 SecStatusCode“Param”,另一个抛出“System.InvalidOperationException:Param”。有人可以帮我解决这个问题吗?从 Xamarin 网站上很难找到这些方法的详细文档。

using(NSData crt = NSData.FromFile("client1.p12"))
{
    X509Certificate2 certificate = new X509Certificate2(crt.ToArray(), password);
    var identity = SecIdentity.Import(certificate.Export(X509ContentType.Pkcs12, password), password);

    var record = new SecRecord(SecKind.Certificate);
    record.Label = "client1_crt";
    record.SetValueRef(identity.Certificate);
    SecStatusCode secStatus = SecKeyChain.Add(record);

    SecKeyChain.AddIdentity(identity)
}

我也尝试过这种方式:

using (NSData crt = NSData.FromFile("client1-crt.der")
{
    SecStatusCode secStatus = SecKeyChain.Add(new SecRecord(SecKind.Certificate)
    {
        ApplicationLabel = "client1_crt",
        KeySizeInBits = 512,
        KeyClass = SecKeyClass.Public,
        ValueData = NSData.FromString(crt)                                                                   
    }); 
}

但是 secStatus 仍然显示“Param”。

标签: xamarinxamarin.ioskeychain

解决方案


问题解决了。原来我们需要在 Entitlements.plist 文件中启用钥匙串。详细详细步骤:
https ://forums.xamarin.com/discussion/comment/330146#Comment_330146


推荐阅读