2011-12-04 13 views
2

如果我需要爲證書提供額外的權限(如下所述),那麼我甚至可以在Powershell中開始?必須有一個Windows命令行可執行文件,我必須從命令行開始。只有這樣我才能考慮將它寫入PowerShell腳本中,對嗎?從哪裏開始爲此創建Powershell腳本?

  1. 單擊開始,在搜索程序和文件框中鍵入mmc,然後按ENTER鍵。
  2. 在文件菜單上,單擊添加/刪除管理單元。
  3. 在「可用的管理單元」下,雙擊「證書」。
  4. 選擇計算機帳戶,然後單擊下一步。
  5. 單擊本地計算機,然後單擊完成。點擊確定。
  6. 在控制檯根目錄下的證書(本地計算機)下,在個人存儲中單擊證書。
  7. 右鍵單擊之前創建的xxAzurehost1證書。選擇所有任務>管理私鑰。點擊添加,然後點擊高級。 單擊位置並選擇您的本地計算機。點擊查找。在搜索結果中選擇 NETWORK SERVICE,然後單擊確定。點擊確定。在xxxazurehost1私鑰窗口的 權限中,選擇NETWORK SERVICE並授予讀取權限。點擊確定。

回答

4

要控制私鑰的ACL,您只需編輯文件ACL。訣竅是找到哪個文件。

私人密鑰存儲在:

%ProgramData%\Microsoft\Crypto 

在XP:

C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto 

在這裏你會看到由算法例如舉辦鑰匙DSS,RSA。

用戶存儲將用子用戶SID進行子文件夾。本地機器商店將在子文件夾中:

MachineKeys 

以下是獲取存儲證書私鑰信息的文件的方法。

  1. 首先進入本地計算機個人證書存儲:

    PS> cd cert:\LocalMachine\My 
    
  2. 現在你要得到一個處理您的證書。有這樣做的方法不止一種,這裏有一個使用指紋:

    $cert = dir | ? {$_.Thumbprint -eq "232820EEBF7DBFA01EE68A28BA0450671F862AE1"} 
    
  3. 現在,你可以找到私鑰文件名是這樣的:

    $fileName = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName 
    $keyFile = dir -Path "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto" -Recurse | ? {$_.Name -eq $fileName} 
    
  4. $密鑰文件將是FileInfo對象您可以使用Set-ACL或icacls更改ACL。exe

+0

非常感謝您的支持。它給了我正確的方向,我也發現了一個完全符合這個http://tinyurl.com/cbsmpqk的博客。因爲看起來您確實明白我想要達到的目標,您會授權哪些角色閱讀私鑰而不損害網站的安全性?我已將它提供給用戶並且它可以正常工作,只是想知道這是否意味着只有機器上的用戶纔可以從Internet讀取它或從互聯網上讀取任何人,結果如何。謝謝 – Houman

+0

總是遵循最不寬容的規則。我認爲你在不修改ACL的情況下發生錯誤。在啓動應用程序時,您應該能夠確切地確定使用procmon訪問私人帳戶的具體帳戶。由於您知道私鑰文件路徑是什麼,因此請查看針對ACCESS DENIED的procmon日誌並檢查屬性以查看它是哪個帳戶。我猜這將是應用程序池標識。 –