憑證服務無法使用指定的加密金鑰提供者。
Active Directory 憑證服務 (AD CS) 需要金鑰修復代理憑證、Exchange (XCHG) 憑證和金鑰,才能支援金鑰保存。對於公開金鑰基礎結構而言,金鑰修復代理憑證、XCHG 憑證以及建立這些憑證所需的密碼編譯服務提供者 (CSP) 是否正常運作相當重要。
使用支援金鑰保存與修復的密碼編譯服務提供者
使用系統管理工具可能無法解決由密碼編譯提供者 (用於執行加密和加密憑證產生相關工作的軟體元件) 造成的問題。但是,下列工作可以提供診斷資訊以在解決過程中提供協助:
識別並測試密碼編譯提供者。
如果問題繼續存在並且您使用非 Microsoft 提供者,請連絡廠商以取得疑難排解資訊。
您也可以重設為預設加密金鑰提供者,但同時必須撤銷目前的 CA Exchange 憑證,這樣才能發出基於新提供者的新憑證。
如果問題繼續存在並且您使用 Microsoft 提供者,則請連絡 Microsoft 客戶服務與支援部門。
識別並測試密碼編譯提供者
若要執行此程序,您必須擁有管理 CA 權限,或者必須已被委派適當的權限。
若要識別並測試您所使用的密碼編譯提供者:
開啟命令提示字元視窗。
輸入 certutil -getreg ca\EncryptionCSP,然後按 ENTER。
輸入 certutil -csp <providername> -csptest 並按 ENTER。將提供者名稱取代為步驟 2 輸出中識別的提供者。
如果您使用非 Microsoft 密碼編譯提供者,請連絡廠商以取得協助。否則,請連絡 Microsoft 客戶服務與支援部門。
重設預設加密金鑰提供者
若要執行此程序,您必須擁有本機 Administrators 的成員資格,或者必須已經被委派適當的權限。
透過將下列登錄機碼設定為 [Microsoft 軟體金鑰儲存提供者],您可以將憑證授權單位 (CA) 設定為針對加密憑證使用預設 Microsoft 提供者。
附註:您可能必須撤銷目前的 CA Exchange 憑證 (如果有的話),這樣才能發出基於新提供者的新憑證。然後,重新啟動 CA。
若要修改已設定的加密金鑰提供者:
注意: 不正確地編輯登錄可能會對系統造成嚴重損害。在變更登錄前,您應先備份所有重要的資料。
在主控 CA 的電腦上,按一下 [開始],輸入 regedit,然後按 ENTER。
移至 HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\CA 名稱\EncryptionCSP\Provider。
將列出的值變更為 [Microsoft 軟體金鑰儲存提供者]。
開啟 [憑證授權單位] 嵌入式管理單元。
在主控台樹狀目錄中,按一下 [已發出的憑證]。
在詳細資料窗格中,選取 [CA Exchange] 憑證。
在 [動作] 功能表上,指向 [所有工作],然後按一下 [撤銷憑證]。
選取撤銷憑證的理由並視需要調整撤銷的時間,然後按一下 [是]。
重新啟動 CA。
若要確認金鑰保存和修復是否正確運作:
在主控 CA 的電腦上,按一下 [開始],指向 [系統管理工具],然後按一下 [憑證授權單位]。
在主控台樹狀目錄中,以滑鼠右鍵按一下憑證授權單位 (CA) 的名稱,然後按一下 [內容]。
按一下 [修復代理] 索引標籤。
確認所有金鑰修復代理憑證都列示為 [有效]。
在 [憑證範本] 容器中,確認加密憑證在 [要求處理] 索引標籤上設定有選項 [保存物件的加密私密金鑰]。
為具有依據此憑證範本註冊憑證的權限的使用者帳戶開啟 [憑證] 嵌入式管理單元。
在主控台樹狀目錄中,以滑鼠右鍵按一下 [個人],指向 [所有工作],然後按一下 [要求新憑證],以啟動 [憑證註冊精靈]。
依據加密範本註冊憑證,並確認註冊成功完成,沒有報告任何錯誤。
註冊完成後,開啟 [憑證授權單位] 嵌入式管理單元。
在主控台樹狀目錄中,按一下 [已發出的憑證]。
找出剛才發出的憑證項目,並新增 [備份金鑰] 欄位至嵌入式管理單元顯示清單。
確認文字 [是] 出現在剛才發出的憑證的 [備份金鑰] 欄位上。
Target | Microsoft.Windows.CertificateServices.CARole.6.2 | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 86 | ||
Event Source | Microsoft-Windows-CertificationAuthority | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | High | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
WriteToCertSvcEvents | WriteAction | Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher | Default |
WriteToDB | WriteAction | Microsoft.SystemCenter.CollectEvent | Default |
<Rule ID="Microsoft.Windows.CertificateServices.CARole.6.2.CertSvcEvents.86" Enabled="onEssentialMonitoring" Target="CSDisc!Microsoft.Windows.CertificateServices.CARole.6.2" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">86</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-CertificationAuthority</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectEvent"/>
<WriteAction ID="WriteToCertSvcEvents" TypeID="Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher"/>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="AlertMessageIDda66f694c2aa435dbbbc3e09e3585e3d"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>