X509证书 - 密钥集不存在

46

我有一个使用WinForms编写的应用程序,它使用 WCF 服务,并将证书作为参数传递给函数:

mySvcClient.SendDocument(cert.Export(X509ContentType.SerializedCert, "password"));
...
在WCF服务中,我使用字节数组重新创建了证书:
public void SendDocument (byte[] binaryCert)
{   
     X509Certificate2 cert = new X509Certificate2(binaryCert, "password");
...

但是当我使用证书对XML进行签名时,遇到了“密钥集不存在”的错误:

if (cert.HasPrivateKey) // WORKS!!!
{   
    signedXml.SigningKey = cert.PrivateKey; // THROW "keyset does not exist" EXCEPTION
...

在我的电脑上,这个应用程序能够百分之百正常工作!但是在 Web 服务器上,我遇到了这个错误!

问题是:即使从字节数组重新创建 X509Certificate2,我需要一些特殊的权限才能访问私钥吗?

谢谢!


1
这个链接可能会对你有所帮助... https://dev59.com/GXRB5IYBdhLWcg3wgXdV#39223239 - Md. Ilyas Hasan Mamun
我曾经遇到过同样的问题,这是唯一对我有效的解决方案。https://dev59.com/GXRB5IYBdhLWcg3wgXdV#57667772 - CharithJ
11个回答

0

一些故障排除步骤:

  1. 以管理员身份运行您的程序
  2. 如果它是在IIS中部署的Web应用程序 -> 然后将IIS_IUSRS添加到证书权限中。 在个人中选择证书,右键单击->管理私钥 ->添加用户。
  3. 如果在调试中,请以管理员模式运行Visual Studio以解决此问题

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接