环境 设备:。 iPhone6s
开发环境: .net标准1.5,Mac社区版本7.2.2上的Visual Studio(版本7),Xamarin
我有以下代码来获取/列出我的iPhone上安装的证书。到目前为止我还没有成功 - 当我使用下面的代码时,我得到一个空集合。
我正在使用开发配置文件在iPhone上运行代码。
我有2个项目是便携式项目和iOS项目。下面列出的代码位于可移植类库中。
using System;
using System.Collections.Generic;
using Xamarin.Forms;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
X509Store paramStore
paramStore = new X509Store(StoreName.My, StoreLocation.CurrentUser)
paramStore.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in paramStore.Certificates)
{
numberOfCertificates = numberOfCertificates + 1;
}
我还尝试访问StoreName.Root,StoreName.CertificateAuthority以及OpenFlags的变体,例如.ReadWrite - 结果相同没有数据。
寻找输入/想法。
答案 0 :(得分:1)
不幸的是,它不支持iOS,这是Apple方面的解释:
首先,一些澄清:
鉴于您之前谈的是“客户端身份验证”,我认为您在讨论数字身份而不是证书。 注意数字标识是私钥和包含与该私钥匹配的公钥的证书的组合,如果您希望服务器对客户端进行身份验证,则需要在客户端提供该标识。
您似乎关心通过MDM安装的数字身份。以这种方式安装的凭据放在Apple钥匙串访问组中,因此只能由Apple应用程序访问。 QA1745 Making Certificates and Keys Available To Your App更详细地讨论了这一点。
有没有办法检查[设备]上是否安装了[数字身份]?
不一般。
更多详细信息,请参阅Apple开发者论坛中的相关案例:How to get Certificates list from iOS device?