0

我正在使用以下代码对数据进行签名:

        RSACryptoServiceProvider csp;

        X509Store my = new X509Store(StoreName.My, StoreLocation.LocalMachine);

        my.Open(OpenFlags.ReadOnly);

        foreach (X509Certificate2 cert in my.Certificates)
        {
            if (cert.Subject.Contains(certSubject))
            {
                csp = (RSACryptoServiceProvider)cert.PrivateKey;
            }
        }
        csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA256"));

将证书安装到本地计算机后第一次工作正常,但是当我在计算机重新启动后尝试签名时会引发异常。可能是什么原因,请帮忙。

4

1 回答 1

0

我遇到过同样的问题。在我的帐户中运行的 IIS Express 能够在我将证书导入本地计算机的当天访问证书的私钥,但在重新启动后无法访问。我能够解决的方法是在certlm控制台中明确授予我的帐户的完全权限(即使我的帐户已经在本地管理员组中,该组对该私钥具有完全权限)。

于 2017-03-07T13:44:09.703 回答