【问题标题】:Read certificates from a PKI card从 PKI 卡读取证书
【发布时间】:2014-04-24 03:17:55
【问题描述】:

如何从 PKI 卡中读取证书?

我尝试在互联网上寻找答案,但没有得到任何好的结果。

任何想法如何从 PKI 卡中获取证书?

我需要使用证书密钥签署一些表格。所有这一切都将发生在网络应用程序中。

稍后...

我没有尝试太多,因为我没有起点。我刚刚了解到,当您插入卡时,Windows 会读取所有证书。这样我想我可以使用X509Store 来获取它们。我会试试看,我会回来的,但我仍然需要一些帮助。

【问题讨论】:

标签: c# asp.net pki


【解决方案1】:

在您插入 SmartCard 后,证书就会立即复制到您本地的个人证书存储中。您可以使用“certmgr.msc”(运行 -> 输入)查看这些证书。

您可以使用 X509Store 访问证书以及相关的私钥。但当然,出于安全原因,您只能在您的机器上本地执行此操作。想象一下,每个网站都可以访问您的私钥...... How to Sign and Verify the signature with .NET and a certificate (C#)

如果您使用的是 CAPICOM,您仍然需要在本地机器 (JavaScript) 上执行代码。 你发现下面的语句here

[CAPICOM 是一个仅限 3​​2 位的组件,可用于以下操作系统:Windows Server 2008、Windows Vista、Windows XP。相反,使用 .NET Framework 来实现安全功能。有关详细信息,请参阅下面列出的替代方案。] 重要 CAPICOM 的替代品都没有为脚本提供解决方案。因此,您必须编写自己的 ActiveX 控件。有关详细信息,请参阅 ActiveX 控件

这表明 .Net 类不是 CAPICOM 的“完全”替代品。所以你不能在 JavaScript 中使用“X509”类。

如果您想使用客户端私有证书对某些数据进行签名(假设是哈希),您需要在客户端上运行代码。以下是您可以做的一些想法:

  • 编写一个 ActiveX 控件
  • 编写浏览器插件
  • 编写一个可以使用自定义 URI 架构调用的应用程序(不能发布另一个链接,谷歌它,你会找到它)。

当然,您需要在服务器端检索数据,而对于最后一个解决方案,您可能需要一种网络服务。

结论

不要混淆证书中的私钥和公钥。 在某些情况下,您将证书发送到服务器,例如验证。 但它是你的公钥。你永远不应该到处发送你的私钥(当然在技术上是可能的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多