我在托管服务器中有一个Web应用程序,并且我试图使用以下代码加载pfx文件并使用它在该服务器中签署文档。
X509Certificate2 cert = new X509Certificate2(physicalPath of pfx file, password, X509KeyStorageFlags.MachineKeySet);
但是在托管服务器中却出现以下错误:
“ /”应用程序中的服务器错误。指定的网络密码不正确。
描述:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.Security.Cryptography.CryptographicException:指定的网络密码不正确。
我使用了该代码,因为托管服务器提供商不允许我安装证书,因此我认为使用带有私钥的pfx文件可以解决问题,但不是。...
提供者回答我,可能是该代码(或我的帐户)正试图访问操作系统中的某些保护区域……是真的吗?有解决方法吗?
答案 0 :(得分:0)
您实际上要执行的操作是通过代码Enum MachineKeySet导入PFX文件,实际上是通知X509构造函数将私钥存储在本地计算机存储中,而不是当前用户存储中。
当然,在这种情况下,您的进程将需要对计算机证书存储区的必要访问,并将尝试写入默认情况下不允许的数据。
您可以改用此方法
[System.CLSCompliant(false)]
public X509Certificate2 (string fileName, System.Security.SecureString password);