ASP.NET X509Certificate2在IIS中承载时被拒绝访问

qnakjoqk  于 2022-11-12  发布在  .NET
关注(0)|答案(1)|浏览(238)

我使用下面的ASP.NET代码从文件夹中加载pfx文件

var certificatePath = $"{HttpContext.Current.Server.MapPath("~")}{certFolderName}\\{certFileName}";
return new X509Certificate2(certificatePath, certPassword, X509KeyStorageFlags.MachineKeySet);

这段代码在本地IIS中运行良好。但是,相同的代码在移动到我们的QA服务器时,会抛出如下所示的“拒绝访问”错误。

我看了很多论坛,知道这主要是访问文件夹C:\ProgramData\Microsoft\Crypto\RSA\MachineKey时的权限问题。我已经在我们的服务器上验证了对该文件夹的访问权限,一切正常。“Everyone”用户具有读写权限。因此理想情况下不应该出现任何访问被拒绝的错误。我甚至明确地为应用程序池的身份提供了完全控制权限,但仍然不起作用。我正在尝试了解还有什么可能导致访问被拒绝的问题。

blmhpbnm

blmhpbnm1#

返回新的X509证书2(证书路径,证书密码,X509密钥存储标志.机器密钥集);
问题出在最后一个参数。您的应用程序(应用程序集区识别)没有存取本机计算机存放区的权限。您应该使用目前使用者存放区(用于永久性密钥储存),如果密钥必须只在执行阶段存取,则应该使用暂时性存放区。

相关问题