我有同样的问题:
设置证书的权限涉及授予应用程序池对证书文件的读取权限。
这可以通过使用icacls.exe(Windows资源管理器的安全性的用户界面不支持应用程序池)来实现:
icacls C:\ProgramData\Microsoft\crypto\rsa\machinekeys\9876abcdeblahblahblah /grant "IIS AppPool\AppPoolName:R"
的Windows商店机键在C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
,但文件的名称不相关证书。如果您的证书是在另一家商店
ls Cert:\LocalMachine\TrustedPeople |
select Subject,@{n='FileName';e={$_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName}} |
Format-List
(更改“TrustedPeople”:可以使用此PowerShell代码来获得每个证书的文件名。)
应用程序池的名称可以从IIS管理器的应用程序池节点,或通过运行此PowerShell代码来获得:
Import-Module WebAdministration; ls IIS:\AppPools
这PowerShell的3脚本将使用出的GridView(OGV)作为证书和应用程序池的GUI选择列表,然后再授予权限:
ipmo WebAdministration
$cert = (ls Cert:\LocalMachine\TrustedPeople |
ogv -OutputMode Single -Title "Select Certificate").
PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$app = (ls IIS:\AppPools |
ogv -OutputMode Single -Title "Select App Pool").Name
icacls $env:ProgramData\Microsoft\crypto\rsa\machinekeys\$cert /grant "IIS AppPool\$($app):R"
请查看http://weblogs.asp.net/hernandl/archive/2005/02/09/WinHttpCertCfgTool.aspx Regards, Vivek – Vivek 2009-11-05 13:21:50
我已经试过这个示例。我的证书现在可以访问许多用户。池用户,域管理员,每个人... 看起来像appdomain正在“LocalSystem”下运行,我不''看到的方式来访问该用户,因为该文档说,这是用户与管理员访问已经。 – bkhanal 2009-11-05 18:37:00