Jaa


DPM 证书疑难解答(第 3 部分):证书

大家好,Shane Brasher 再次与您见面了,今天我们将接着 DPM 证书疑难解答(第 1 部分):一般疑难解答DPM 证书疑难解答(第 2 部分):注册表来继续第 3 部分“DPM 证书身份验证疑难解答”。

在这一话题中,我们将介绍一些您将在证书缺失或无效时见到的常见问题。我假定您已经安装了证书,并运行了适当的命令,甚至设置了保护组,且在之后对证书本身进行过一些操作。

证书缺失的成员服务器
您可能在设置了证书保护后证书缺失或损毁的情况中见到这一错误。

DPM 管理选项卡 - 代理状态

图像

  • 错误:数据保护管理器错误 ID:316
  • 详细错误代码:内部错误代码:0x9099090E

成员服务器应用程序警报 - 事件 ID 85

图像

MemberServer DPMRACurr.errlog
****************************

5BD3AD20-B2AF-4D1F-95B6-B73212768440 WARNING Failed: Hr: = [0x80092004] : Error locating certificate with thumbprint 2ba53e0056bdde64a7fca789c62abd72a3f57610

5BD3AD20-B2AF-4D1F-95B6-B73212768440 WARNING Failed: Hr: = [0x80092004] : Encountered Failure: : lVal : CertificateUtil::GetCertificateContext(hCertStore, ssThumbprint, &pCertContext)

WARNING Failed: Hr: = [0x80092004] : Error locating certificate with thumbprint 2ba53e0056bdde64a7fca789c62abd72a3f57610

WARNING Failed: Hr: = [0x80092004] : Encountered Failure: : lVal : CertificateUtil::GetCertificateContext(hCertStore, ssThumbprint, &pCertContext)

WARNING OuterException of type System.InvalidOperationException from Method = GetCertificateFromStoreCore

WARNING Exception Message = Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue '2ba53e0056bdde64a7fca789c62abd72a3f57610'.

注意:突出显示的部分显示了系统在查找证书的指纹时存在问题。

成员服务器 DPM CPWrapper 日志 - 证书缺失,且 CP Wrapper 服务重启。
******************************

WARNING Exception Message = Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue '2ba53e0056bdde64a7fca789c62abd72a3f57610'.

WARNING Exception Stack = at System.ServiceModel.Security.SecurityUtils.GetCertificateFromStoreCore(StoreName storeName, StoreLocation storeLocation, X509FindType findType, Object findValue, EndpointAddress target, Boolean throwIfMultipleOrNoMatch)

WARNING Caught unhandled exception : System.InvalidOperationException: Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue '2ba53e0056bdde64a7fca789c62abd72a3f57610'.

CRITICAL Exception Message = Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue '2ba53e0056bdde64a7fca789c62abd72a3f57610'. of type System.InvalidOperationException, process will terminate after generating dump

此外,如果受保护的服务器被删除,那么一旦重启 DPM CPWrapper 服务,您就将看到以下错误。

图像

解决方案: 如果成员服务器缺失了其证书,那么用户需要进行以下操作。

1.) 如果已在安全位置备份了证书,则将该证书导入适当的计算机\个人存储区,并重启 DPMCPWrapper 服务。如果您没有备份证书,则继续下一步。

2.) 请求一个新的证书,以确保指定正确的证书特性,并将其置于计算机\个人存储区。

3.) 重新运行 SetDPMServer 命令,以重新创建成员服务器 bin 文件。将 bin 文件复制到 DPM 服务器。完成上述步骤后,在 DPM 服务器上重新运行 Attach-ProductionServerWithCertificate.ps1 命令。请参考以下资源链接。

资源https://blogs.technet.com/b/dpm/archive/2012/04/23/how-to-use-certificates-to-authenticate-computers-in-workgroups-or-untrusted-domains-with-data-protection-manager.aspx

重要说明: 您可能需要多次重启成员服务器和 DPM 服务器。

 

证书缺失的 DPM 服务器
包含这些故障的应用场景将发生于 DPM 服务器证书缺失的时候。如果 DPM 服务器缺失其证书,那么您将在刷新代理后在 DPM GUI 中看到此内容。

 

DPM 监视选项卡
******************

图像

请注意,错误 3301 表示证书无效。

 

DPM 警报事件日志
******************

图像

注意:错误 33301 等同于证书无效。

MSDPMCurr.errlog 代码段
***********************

cmdprocforcertificate.cpp(331) [000000001A7F4F50] WARNING CCommandProcessor::SendOutboundCommandUsingCertificate failed for Server:MemberServer.Contoso.com

WARNING ConfigureProtection.OnFailure.AADeactivationBlock.RAForRead.PT : RADeleteWorkItem, StatusReason = Timeout (StatusCode = -2146233079 , ErrorCode = WCFClientCertificateInvalid, workitem = a1e5773c-a587-4788-a7fb-622f6bf7341e)

5A0AC966-C3A0-4D24-95FF-E96FD0DE04DA WARNING CheckTimeoutMessage: code[0x00008215], detailedCode[0x80131509], errMgs[Unknown error (0x80131509) (0x80131509)]

5A0AC966-C3A0-4D24-95FF-E96FD0DE04DA WARNING <ErrorInfo ErrorCode="33301" DetailedCode="-2146233079" DetailedSource="2" ExceptionDetails="" xmlns="https://schemas.microsoft.com/2003/dls/GenericAgentStatus.xsd">

5A0AC966-C3A0-4D24-95FF-E96FD0DE04DA WARNING <Parameter Name="machinename" Value="DPM2012Backup.Contoso.com" />

5A0AC966-C3A0-4D24-95FF-E96FD0DE04DA WARNING <Parameter Name="exceptionmessage" Value="Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue '994b424d93fc08e4fe88c787298c7617ee095cda' ." />

 

DPMCPWrapperServiceCurr.errlog
=============================

如果证书缺失,那么用户将在重启 DPMCPWrapper 服务后看到该错误日志。

everettexception.cpp(761) CRITICAL Exception Message = Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindByThumbprint', FindValue 'c8ccf847ae8d319691feea1d6f796f0d67fdc7c4'. of type System.InvalidOperationException, process will terminate after generating dump

请注意该消息关于生成一个转储。该转储(故障日志)将位于以下目录:%Program Files%\Microsoft System Center 2012\DPM\DPM\Temp。转储文件将名为“DPMCPWrapperServiceCurr.errlog.2012-07-11_18_06_16.Crash”

解决方案:如果 DPM 证书缺失,用户请遵循以下步骤。

1.) 如果已在安全位置备份了证书,则将该证书导入适当的计算机\个人存储区,并重启 DPMCPWrapper 服务。如果您没有备份证书,则继续下一步。

2.) 为 DPM 服务器请求一个新的证书,以确保指定正确的证书属性,并将其置于计算机\个人存储区。

3.) 重新运行 SetDPMCredentils 命令,以重新创建成员 DPM bin 文件。将 bin 文件复制到成员服务器。完成上述步骤后,在成员服务器上重新运行 SetDPMServer 命令,以生成此 bin 文件。将成员服务器 bin 文件复制到 DPMserver。

4.) 完成上述步骤后,在 DPM 服务器上重新运行 Attach-ProductionServerWithCertificate.ps1 命令。

请参考以下资源链接。

资源https://blogs.technet.com/b/dpm/archive/2012/04/23/how-to-use-certificates-to-authenticate-computers-in-workgroups-or-untrusted-domains-with-data-protection-manager.aspx

重要说明: 这应被视为是一个非常糟糕的情况。这将全部重新开始,就像您通过基于证书的身份验证来保护许多服务器,且 DPM 证书缺失。您需要:

a.) 生成 DPM bin 文件
b.) 将其复制到您通过证书身份验证保护的每台服务器上。
c.) 运行 setdpmserver 命令
d.) 将每台服务器的 bin 文件带到 DPM 服务器。
e.) 在每台 DPM 服务器上运行附加命令。

您需要对您使用证书身份验证保护的每台服务器进行这一操作。当然,如果您通过证书保护了 100 台服务器,那么这将消耗大量人力。

作为一项预防措施,我强烈建议您导出您的 DPM 和成员服务器证书,并将其保存在一个安全的位置。

 

过期的证书

MemberServer 证书过期

如果证书在受保护的服务器上过期,那么您将见到以下错误。

DPM 管理选项卡 - 代理状态

图像

 

 

 

DPM 监视选项卡
=================

图像

DPMRACurr.errlog
================

415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD FATAL <Status xmlns="https://schemas.microsoft.com/2003/dls/StatusMessages.xsd" StatusCode="-2146893016" Reason="Error" CommandID="RAReadDatasetDelta" CommandInstanceID="80b85883-9822-4a64-bea0-1c661101dbe5" GuidWorkItem="856c0da1-fad7-46ba-a215-db95b90de630" TETaskInstanceID="415bf1bd-04ef-486c-a8d0-0c6a8e8e0bbd"><ErrorInfo xmlns="https://schemas.microsoft.com/2003/dls/GenericAgentStatus.xsd" ErrorCode="536872925" DetailedCode="-2146893016" DetailedSource="2"><Parameter Name="AgentTargetServer" Value="MemberServer.Contoso.com"/></ErrorInfo><RAStatus><RAReadDatasetDelta xmlns="https://schemas.microsoft.com/2003/dls/ArchiveAgent/StatusMessages.xsd" BytesTransferred="0" NumberOfFilesTransferred="0" NumberOfFilesFailed="0" DataCorruptionDetected="false"/></RAStatus></Status>

415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Failed: Hr: = [0x80090328] : Encountered Failure: : lVal : hr

415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Logging event for error: 33302, detailed: 0xa61590

415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Failed: Hr: = [0x00008216] CCmdProcEvent::GetEventId: unexpected errorCode: detailed hr: 0x00a61540

注意: 错误代码 -21468930160x80090328 基本上表示
SEC_E_CERT_EXPIRED
# 接收的证书已过期。

错误代码 33302 表示服务身份验证失败。

 

证书过期的 DPM 服务器

如果证书在 DPM 服务器上过期,那么您将看到类似于以下的错误。

图像

DPMRCurr.errlog

ExceptionPolicy.cs(169) WARNING InnerException of type System.IdentityModel.Tokens.SecurityTokenValidationException from Method = Build

02F8 094C 05/02 17:32:29.282 04 ExceptionPolicy.cs(174) WARNING Exception Message = The X.509 certificate CN=DPM2012.Contoso.com chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.

02F8 094C 05/02 17:32:29.282 04 ExceptionPolicy.cs(174) WARNING Exception Stack = at System.IdentityModel.Selectors.X509CertificateChain.Build(X509Certificate2 certificate)

02F8 094C 05/02 17:32:29.282 04 cmdprocforcertificate.cpp(232) [0000000000B6FB90] 415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Failed: Hr: = [0x80990941] pDpmCmdProcObject->SubmitResponse failed on server DPM2012.Contoso.com, hrOriginal = 0x80131501, No further retry

02F8 094C 05/02 17:32:29.282 04 cmdprocforcertificate.cpp(331) [0000000000B6FB90] 415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING CCommandProcessor::SendOutboundCommandUsingCertificate failed for Server: DPM2012.Contoso.com

02F8 094C 05/02 17:32:29.282 04 cmdproc.cpp(2631) [0000000000B6FB90] 415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Logging event for error: 33302, detailed: 0xa61590

02F8 094C 05/02 17:32:29.282 04 events.cpp(89) [0000000000A2FF90] 415BF1BD-04EF-486C-A8D0-0C6A8E8E0BBD WARNING Failed: Hr: = [0x00008216] CCmdProcEvent::GetEventId: unexpected errorCode: detailed hr: 0x00a61540

 

DPM DPMCPWrapperServiceCurr.errlog

CertificatesHelper.cs(498) NORMAL Certificate with subject: CN=DPM2012.Contoso.com and thumbprint: 02E436145567778DED5E95138343AE1F19163ED1 is not valid

0AD0 0C3C 05/02 18:07:28.110 09 CertificatesHelper.cs(503) WARNING Flags = NotTimeValid, Info = A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.

0AD0 0C3C 05/02 18:07:28.110 09 CertificatesHelper.cs(166) WARNING The certificate with subject: CN=DPM2012.Contoso.com is not trusted

DPM CPWrarpper 错误日志代码

有关客户端相关的错误 (33300 – 33302),请参阅 dpmra*.errlogmsdpm*.errlog

有关服务端的错误 (33303 – 33304),请在 dpmcpwrapperservice*.errlog 中查看错误

关于 PKI 相关的问题,查看加密 API 事件日志是确定证书验证过程中错误的一种非常有用的方式。该事件日志在 Windows Vista 及之后的版本中可用。

配置步骤错误
33231 :未在“LocalMachine” StoreLocation 的个人存储区中找到证书。
33232 :尝试定位证书异常。
33233 :试图验证证书时遇到的异常。
33234 :证书无效。
33235 :试图添加防火墙规则的错误。
33236 :试图配置 DpmCPWrapperService 的错误。
33237 :一般回滚错误。
33241 :未在计算机中检测到 .NET 3.5 SP1(仅对 SetDpmServer.exe 可见)。

业务连续性期间的错误
33300:WCF 客户端配置文件中的配置错误。(dpmra.exe.config 或 msdpm.exe.config)。
33301:客户端证书无效。
33302:服务身份验证失败。
33303:服务未对客户端授权。
33304:WCF 服务处于错误状态。造成这些错误的一些可能原因:
a.) 远程对等机器上未运行服务。
b.)WCF 服务中发生故障。
c.)WCF 未响应客户端请求导致超时。
d.)一般通信失败。
e.)服务端上客户端发生身份验证失败。
f.)注册表项缺失

 

结论: 确保您的证书基础结构坚不可摧,并为 DPM 服务器和成员服务器建立了对 CRL 的良好连接,这一点至关重要。此外,DPM 服务器和成员服务器之间需要有一个稳定的链接。一旦证书准备就绪,就不应将其单独搁置,而需要以任何形式不断更改证书。当然,用户最好能够准备一个应变计划,以防出现任何差错。正如此前所提到的,您最好能够导出证书,以备恢复丢失的证书的不备之需。

 

 

附录 A

CAPI2 事件记录

如果您多次发生身份验证失败,请参阅 DPM 和受保护的计算机上的 CAPI 事件查看器日志。默认情况下,系统将不会启用该日志。要启用该日志,请导航到:
Event Viewer\Applications and Service Logs\Microsoft\CAPI2
然后右键单击 [Operational](运行),并选择 [Enable Log](启用日志)。

图像

 

完成后重新问题。

示例:

图像

进入属性详细信息,我们可看到:

图像

这将告诉我们无法访问 CRL 服务器。

4.) 确保已启动 DPM CPWrapper 服务,且将其设置为 [Automatic](自动)。否则,请重启服务,并测试您的附加命令,或通过证书使用情况测试您的连接性。

 

 

其他资源

Microsoft 根证书程序: https://technet.microsoft.com/zh-cn/library/cc751157.aspx

如何借助 Data Protection Manager 使用证书来对不受信任工作组或域中的计算机进行身份验证: https://blogs.technet.com/b/dpm/archive/2012/04/23/how-to-use-certificates-to-authenticate-computers-in-workgroups-or-untrusted-domains-with-data-protection-manager.aspx

Shane Brasher | 高级支持呈报工程师

 

App-V 团队博客:https://blogs.technet.com/appv/
ConfigMgr 支持团队博客:https://blogs.technet.com/configurationmgr/
DPM 团队博客:https://blogs.technet.com/dpm/
MED-V 团队博客:https://blogs.technet.com/medv/
Orchestrator 支持团队博客:https://blogs.technet.com/b/orchestrator/
Operations Manager 团队博客:https://blogs.technet.com/momteam/
SCVMM 团队博客:https://blogs.technet.com/scvmm
Server App-V 团队博客:https://blogs.technet.com/b/serverappv
Service Manager 团队博客:https://blogs.technet.com/b/servicemanager
System Center Essentials 团队博客:https://blogs.technet.com/b/systemcenteressentials
WSUS 支持团队博客:https://blogs.technet.com/sus/

Forefront Server Protection 博客:https://blogs.technet.com/b/fss/
Forefront Endpoint Security 博客:https://blogs.technet.com/b/clientsecurity/
Forefront Identity Manager 博客:https://blogs.msdn.com/b/ms-identity-support/
Forefront TMG 博客:https://blogs.technet.com/b/isablog/
Forefront UAG 博客:https://blogs.technet.com/b/edgeaccessblog/