我有一个使用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,我需要一些特殊的权限才能访问私钥吗?
谢谢!