我正在尝试从 WPF 应用程序中的 pfx 文件加载证书,但出现访问被拒绝错误。
using (FileStream stream = System.IO.File.OpenRead(certificatePath))
{
using (BinaryReader reader = new BinaryReader(stream))
{
buffer = reader.ReadBytes((int)stream.Length);
}
}
X509Certificate2 certificate = new X509Certificate2(buffer, password);
System.Security.Cryptography.CryptographicException:访问被拒绝。
在
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32
小时)在
System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[]
rawData、IntPtr 密码、UInt32 dwFlags、布尔 persistKeySet、
SafeCertContextHandle& pCertCtx) at
System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[]
rawData、对象密码、X509KeyStorageFlags keyStorageFlags)位于
System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[]
rawData,字符串密码)位于
HelloWorld.HelloClient.Models.Infrastruct.ReadCertificateFromPfxFile(字符串
证书路径,字符串密码)
代码片段中的最后一行导致异常,如果我以管理员身份运行它,它工作正常。问题似乎是 X509Certificate2 的默认构造函数尝试将私钥放入用户存储中。我没有使用网络应用程序。this帖子没有解决我的问题。我认为当前用户可能无权访问他自己的私钥存储。但我怎样才能授予该访问权限呢?
如果有人正在寻找类似问题的解决方案,请发布修复程序。我跑了sys内部进程监视器并意识到构造函数调用正在机器密钥文件夹中创建密钥,并授予用户在机器密钥上写入的权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)