用户证书在Windows中显示“无法找到用于解密的证书和私钥。”


0

拥有许多用户证书突然停止工作的计算机。

运行 certutil -silent -user -store my 显示受影响的用户的所有用户证书已停止工作。

    my
================ Certificate 0 ================
Serial Number: 2a0000210be8f0775a3a2e2b7200040000210b
Issuer: CN=PROD Issuing CA, DC=somecompany, DC=Com, DC=Au
 NotBefore: 10/01/2017 7:46 AM
 NotAfter: 10/01/2018 7:46 AM
Subject: CN=username, OU=somecompany, OU=Level 1, OU=Laptop Users, OU=Special Group Users, DC=somecompany, DC=Com, DC=Au
Non-root Certificate
Template: 1.3.6.1.4.1.311.21.8.4586432.4805332.10505398.7351119.9274134.0.14270575.7769536
Cert Hash(sha1): cc 3b d0 2c 03 a1 d9 d4 0d 28 31 a7 84 c8 6d cb 6d 97 27 d8
  Key Container = 48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d
  Provider = Microsoft Enhanced Cryptographic Provider v1.0
Cannot find the certificate and private key for decryption.

================ Certificate 1 ================
Serial Number: 7b4d6131959b5f6cd272
Issuer: CN=Communications Server
 NotBefore: 25/08/2017 10:41 AM
 NotAfter: 25/08/2017 6:41 PM
Subject: CN=someguy@somecompany.com.au
Non-root Certificate
Template: 
Cert Hash(sha1): 80 25 75 64 60 77 21 16 35 18 ee 04 4f 87 bc 5f f0 ae b3 2a
  Key Container = OC_KeyContainer_Lync_someguy@somecompany.com.au
  Provider = Microsoft Enhanced Cryptographic Provider v1.0
Cannot find the certificate and private key for decryption.

检查 %APPDATA%\Microsoft\Crypto\RSA 文件夹可以看到私钥文件存在,即在这种情况下是第一证书 48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d

这个问题的潜在原因是什么?我怀疑私钥的加密密钥正在被删除/修改;但想知道如何确认这是否有所改变。

在这种情况下,我们使用Cert Hash(sha1)来查找用户的证书 %APPDATA%\Microsoft\SystemCertificates\My\Certificates\CC3BD02C03A1D9D40D2831A784C86DCB6D9727D8 哪个存在。

然后使用密钥容器字段,我们找到私钥 %APPDATA%\Microsoft\Crypto\RSA\S-1-5-21-2091123715-180627453-533688462-45495\48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d 这也存在。

文件被修改:

•SystemCertificates文件CC3BD02C03A1D9D40D2831A784C86DCB6D9727D8上次修改时间:25/08/2017 10:55 am。这是在请求新密钥时,即在此时间之前用户报告了问题?

•私人密钥文件 %APPDATA%\Microsoft\Crypto\RSA\S-1-5-21-2091123715-180627453-533688462-45495\48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d 最后修改时间10/01/2017 7:56 am(接近系统证书文件发布的时间)

•私钥使用存储的主密钥加密 %APPDATA%\Microsoft\Protect\<user SID>\c77f3872-e1e2-4449-9729-cc97e85e4a3c 这是最后一次修改25/07/2017 8:19 am

•包含用于解密私钥的主密钥的Protect文件夹,文件最后一次修改时间为14/08/2017 8:23 am

%APPDATA%\Microsoft\SystemCertificates\My\Certificates 有0字节证书文件修改12/07/2017 12:00 am - 7:50 am在不同的时间间隔和8/06/2017 11:52 pm - 9/06/2017 8:33 am每8分钟

目前,我们正在使用Windows审核来查找修改 %APPDATA%\Microsoft\SystemCertificates 文件夹和 %APPDATA%\Microsoft\Crypto%APPDATA%\Microsoft\Protect

但是,鉴于证书和私钥文件似乎存在,不确定这是否会识别原因。

应用程序日志还有CertificateServicesClient-AutoEnrollment源的错误:

域\用户名的自动证书注册失败   (0x8007003a)指定的服务器无法执行请求   操作。

任何建议的步骤,以进一步确定“无法找到用于解密的证书和私钥”的根本原因。错误?

Answers:


0

问题似乎是由远程密码重置引起的。在测试环境中复制了该问题:

•Server 2012 R2域控制器,其证书颁发机构配置为自动注册

•Windows 7 x64客户端已加入域

•隔离网络仅托管DC和客户端

•具有可导出私钥的用户证书模板

  1. 通过自动注册组策略将用户证书部署到客户端
  2. 从网络中删除了客户端
  3. 确认的用户可以导出证书的私钥,允许在Windows 7客户端上使用certmgr导出
  4. 将客户端重新连接到网络
  5. 重置从域控制器登录到客户端的用户的密码
  6. 使用“运行方式”在客户端上缓存更新的密码
  7. 断开客户端与网络的连接
  8. 使用更新的缓存凭据注销/登录与网络断开连接
  9. 无法导出私钥
  10. 将客户端重新连接到网络
  11. 无法导出私钥
  12. 注销/登录已连接到网络 - 现在可以再次导出私钥

使用存储在%APPDATA%\ Microsoft \ Protect \\中的主密钥进行加密来保护私钥。主密钥通过项目组合进一步加密,包括用户密码。如果无法解密主密钥,则无法使用私钥。

密码更改方法 - 客户端上的Ctrl + Alt + Del“更改密码”

使用Process Monitor识别本地安全机构进程(LSASS.exe)执行以下操作:

  1. 通过端口TCP端口88(kerberos)和TCP端口464(kpasswd / kerberos v5)与域控制器进行通信
  2. 更新HKLM \ Security \ Cache下的注册表项
  3. 写入\域控制器\ PIPE \ protected storage
  4. 用户配置文件服务更新HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \\ RefCount
  5. 更新主密钥,用于解密私钥:

%APPDATA%\微软\保护\\

  1. 阅读SYNCHIST&amp; %APPDATA%\ Microsoft \ Protect下的CREDHIST文件
  2. 更新%APPDATA%\ Microsoft \ Protect \ SYNCHIST文件
  3. 过程1-7可以重复几次
  4. 更新C:\ Windows \ debug \ PASSWD.log,并显示消息“尝试为用户更改密码更改服务器/域

由于步骤5 - 7,私钥继续有效。

密码更改方法 - 通过Active Directory用户远程重置&amp;电脑

  1. SYNCHIST&amp;主密钥文件不会立即自动更新
  2. 注销/登录网络更新SYNCHIST和主密钥文件,证书可以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.