【发布时间】:2014-09-06 23:34:02
【问题描述】:
我正在开发用于数字签名的多租户 ASP.NET Web 应用程序。 在存储位置“本地计算机”(StoreLocation.LocalMachine) 中为每个名为“Tenant_{TenantId}”的租户证书存储创建。
在具有本地管理员权限的帐户下运行的 Windows 应用程序一切正常。 当从托管在 IIS 上的 ASP.NET 应用程序使用相同的库时,只有“本地系统”身份才能使用证书。
我尝试使用本地管理员用户帐户并获得异常访问被拒绝:
System.Security.Cryptography.CryptographicException: Access is denied.
IIS下的代码有什么限制吗?如何授予用户/代码读取证书权限(从特定证书位置/存储)?
应用程序托管在 Windows Server 2012R2 / IIS 8.5 / ASP.NET 4.5 上
【问题讨论】:
-
代码运行在Application Pool身份下,试试改成管理员看看有没有帮助
-
我试图在本地管理员帐户下运行 IIS 池,但它不起作用,我得到了描述的异常。
-
为什么您使用“本地机器”而不是“当前用户”作为用于数字签名的证书?
-
是的,我们可以使用“当前用户”存储。我认为“本地机器”更有意义,因为我们想提供多租户服务,因此特定证书不“属于”运行服务的用户,而是服务/服务器。也许这是一个哲学上的差异,但这可以回到技术论点。
标签: asp.net windows iis certificate