从PKI卡读取证书

时间:2014-03-18 12:28:47

标签: c# asp.net pki

如何从PKI卡读取证书?

我尝试在互联网上找到答案,但我没有取得任何好成绩。

如何从PKI卡获取证书?

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

...后来

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

1 个答案:

答案 0 :(得分:3)

只要您插入SmartCard,证书就会被复制到您当地的个人证书存储区。您可以使用" certmgr.msc" (运行 - >输入)查看这些证书。

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

如果您使用的是CAPICOM,则仍需要在本地计算机上执行代码(JavaScript)。 您会找到以下语句here

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

这表明.Net类不是" full"替换CAPICOM。所以你不能使用" X509" JavaScript中的类。

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

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

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

<强>结论

不要对证书中的私钥和公钥感到困惑。 在某些情况下,您可以将证书发送到服务器,例如认证。 但那就是你的公钥。你永远不应该发送你的私钥(当然技术上可能)。