Mac上的Xamarin / Visual Studio - iPhone - 无法列出X509Store证书

时间:2017-11-14 18:09:41

标签: c# .net xamarin.ios cryptography visual-studio-mac

环境 设备:。 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 - 结果相同没有数据。

寻找输入/想法。

1 个答案:

答案 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?