C# 从PKI卡读取证书

C# 从PKI卡读取证书,c#,asp.net,pki,C#,Asp.net,Pki,如何从PKI卡读取证书 我试着在网上找到答案,但没有得到任何好的结果 你知道如何从PKI卡上获取证书吗 我需要用证书密钥在一些表格上签名。所有这些都将发生在web应用程序中 后来 我没有尝试太多,因为我没有出发点。我刚刚了解到,当您插入卡时,Windows会读取所有证书。这样,我想我可以使用X509Store获取它们。我会尝试一下,我会回来的,但我仍然需要一些帮助。一旦您插入智能卡,证书就会复制到您当地的个人证书存储中。您可以使用“certmgr.msc”(运行->输入)查看这些证书 您可以使用

如何从PKI卡读取证书

我试着在网上找到答案,但没有得到任何好的结果

你知道如何从PKI卡上获取证书吗

我需要用证书密钥在一些表格上签名。所有这些都将发生在web应用程序中

后来


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

一旦您插入智能卡,证书就会复制到您当地的个人证书存储中。您可以使用“certmgr.msc”(运行->输入)查看这些证书

您可以使用X509Store访问证书以及相关的私钥。当然,由于安全原因,您只能在本地计算机上执行此操作。想象一下每个网站都可以访问你的私钥。。。

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

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

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

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

  • 编写ActiveX控件
  • 编写浏览器插件
  • 编写一个可以使用自定义URI模式调用的应用程序(不能发布另一个链接,用谷歌搜索它,你就会找到它)
当然,您需要在服务器端检索数据,对于最后一个解决方案,您可能需要一种Web服务

结论

不要混淆证书中的私钥和公钥。 在某些情况下,您会向服务器发送证书以进行身份验证。
但这是你的公钥。永远不要发送私钥(当然技术上是可能的)。

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

您可以使用X509Store访问证书以及相关的私钥。当然,由于安全原因,您只能在本地计算机上执行此操作。想象一下每个网站都可以访问你的私钥。。。

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

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

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

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

  • 编写ActiveX控件
  • 编写浏览器插件
  • 编写一个可以使用自定义URI模式调用的应用程序(不能发布另一个链接,用谷歌搜索它,你就会找到它)
当然,您需要在服务器端检索数据,对于最后一个解决方案,您可能需要一种Web服务

结论

不要混淆证书中的私钥和公钥。 在某些情况下,您会向服务器发送证书以进行身份验证。
但这是你的公钥。你不应该到处发送你的私钥(当然在技术上是可能的)。

这是一个很好的问题,但是你能扩展你已经尝试过的内容和你已经编写过的任何示例代码吗?你需要一个插件,它可以读取客户端机器上的卡,然后将它传输到你的服务器。如果您只是在ASP.NET后端使用X509Store,服务器上可能会有一张卡。@Alexander关于从何处开始的想法?恐怕这会回答您的问题:这是一个非常好的问题,但是你能扩展你已经尝试过的和你已经编写过的任何示例代码吗?你需要一个插件,它可以在客户端机器上读取卡,然后可以将它传输到你的服务器。如果您只是在ASP.NET后端使用X509Store,服务器上可能会有一张卡。@Alexander您知道从哪里开始吗?这可能会重复,我想这会回答您的问题: