我有同樣的問題:
設置證書的權限涉及授予應用程序池對證書文件的讀取權限。
這可以通過使用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