【问题标题】:Specify client certificates in HttpWebRequest in .NET Compact Framework 3.5在 .NET Compact Framework 3.5 的 HttpWebRequest 中指定客户端证书
【发布时间】:2009-12-14 19:48:17
【问题描述】:

以前,我尝试在 .NET CF 2.0 上使用客户端证书(请参阅 here),但最终不得不放弃。我现在使用 .NET CF 3.5,它支持 ClientCertificates 对象上的 ClientCertificates 属性。但是,我不知道如何使用 pfx 文件实例化 X509CertificateX509Certificate2 对象。在完整的框架上,我可以简单地执行new X509Certificate2(filename, password) 之类的操作。如果我尝试使用从 .pfx 文件中读取的字节创建对象,则会收到异常消息“.NET CF 3.5 不支持 pfx 文件”。那么如何指定带有私钥的客户端证书以用于ClientCertificates 属性?

【问题讨论】:

    标签: c# .net compact-framework windows-ce x509certificate


    【解决方案1】:

    根据 MDSN,紧凑框架只有 2 个可用/支持的构造器:

    http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.x509certificate2.aspx

    .NET CF 支持的构造函数在第一列的旁边有一个小设备图标。

    这些是:

    X509Certificate2(array<Byte>[]()[])
    

    http://msdn.microsoft.com/en-us/library/ms148413.aspx

    X509Certificate2(IntPtr)
    

    http://msdn.microsoft.com/en-us/library/ms148414.aspx

    【讨论】:

    • 是的,我注意到了。我不明白的是,当紧凑框架的 X509Certificate 对象不支持私钥时,如何指定用于 SSL 客户端身份验证的客户端证书?据我了解,私钥用于向服务器验证客户端的身份,以便服务器可以信任客户端。尽管 Microsoft 在 3.5 中添加了 ClientCertificates 属性,但我在紧凑型框架上看不到任何方法...
    • 我认为这样做的方法是使用 X509Store 类访问本地证书存储中的证书,然后使用这些证书 - 而不是从文件中加载一个。
    • 好的,有趣...如何将证书添加到带有相关私钥的商店?
    • 我个人没有这样做,但我相信为 CE 设备提供证书(请参阅 stackoverflow.com/questions/287316/…),或者您可以使用 CE UI 来执行此操作(请参阅 msdn.microsoft.com/en-us/library/ms900349.aspx 以获取提示)
    • 嗯,配置似乎仅在 Windows Mobile 上可用。我需要在普通的旧 Windows CE 上运行。控制面板中的证书 UI 可以工作,但我需要以编程方式自动执行此操作。您可以使用 X509Store 将 .pvk 文件添加到商店吗?如果没有,我需要弄清楚如何使用适当的 Win32 API 来执行此操作...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多