FindPrivateKey 範例
在憑證存放區中尋找與特定 X.509 憑證相關聯的私密金鑰檔案位置和名稱,可能相當困難。 FindPrivateKey.exe 工具有助於進行這個程序。
重要
您必須先建置 FindPrivateKey 範例 (英文) 才能加以使用。
X.509 憑證是由電腦中的系統管理員或任何使用者所安裝。 不過,該憑證可能會由在不同帳戶底下執行的服務加以存取。 例如,NETWORK SERVICE 帳戶。
這個帳戶可能無法用來存取私密金鑰檔案,因為憑證原先並非透過這個帳戶來安裝。 FindPrivateKey 工具提供您指定之 X.509 憑證的私密金鑰檔案位置。 一旦知道特定 X.509 憑證的私密金鑰檔案位置之後,您就可以新增權限至此檔案或移除此檔案的權限。
基於安全性使用憑證的範例會採用 Setup.bat 檔案中的 FindPrivateKey 工具。 一旦找到私密金鑰檔案,您就可以使用 Cacls.exe 等其他工具,為檔案設定適當的存取權限。
在使用者帳戶底下執行 Windows Communication Foundation (WCF) 服務 (例如自我裝載的可執行檔) 時,請確定使用者帳戶具有檔案的唯讀權限。 在 Internet Information Services (IIS) 底下執行 WCF 服務時,服務執行所在的預設帳戶在 IIS 7 和舊版上為網路服務,在 IIS 7.5 和更新版本上則為應用程式集區身分識別。 如需詳細資訊,請參閱應用程式集區身分識別。
讀取權限
存取處理序沒有讀取權限的憑證時,您會看到類似下列範例的例外狀況訊息:
System.ArgumentException was unhandled
Message="The certificate 'CN=localhost' must have a private key that is capable of key exchange. The process must have access rights for the private key."
Source="System.ServiceModel"
發生這種情況時,可使用 FindPrivateKey 工具來尋找私密金鑰檔案,然後為服務執行所在的處理序設定存取權限。 例如,使用 Cacls.exe 工具完成此操作,如下列範例所示:
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R
慣例 - 命令列項目
"[option]" 代表選擇性的參數組。
"{option}" 代表強制參數組。
"option1 | option2" 代表選項組之間的選擇。
"<value>" 代表要輸入的參數值。
使用方式
FindPrivateKey <storeName> <storeLocation> [{ {-n <subjectName>} | {-t <thumbprint>} } [-f | -d | -a]]
其中:
參數 | 描述 |
---|---|
<subjectName> |
憑證的主體名稱 |
<thumbprint> |
憑證的指紋 (您可以使用 Certmgr.exe 工具來尋找此項目) |
-f |
僅限輸出檔案名稱 |
-d |
僅限輸出目錄 |
-a |
輸出絕對檔案名稱 |
如果未在命令提示字元中指定任何參數,則會顯示具有此資訊的說明文字。
範例
此範例會在 Current User 的 Personal 存放區中尋找主體名稱為 "CN=localhost" 之憑證的檔案名稱。
FindPrivateKey My CurrentUser -n "CN=localhost"
此範例會在 Current User 的 Personal 存放區中尋找主體名稱為 "CN=localhost" 之憑證的檔案名稱,並輸出完整的目錄路徑。
FindPrivateKey My CurrentUser -n "CN=localhost" -a
這個範例會在 Local Computer 的 Personal 存放區中尋找指紋為 "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" 之憑證的檔案名稱。
FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52"