积极答复者
智能卡登陆KDC证书问题

问题
-
Hi,我们正在测试智能卡登陆
测试环境:Windows 2008 R2 域控制器,Windows 2008 R2 CA和一台Windows 2008 R2服务器(都在域中)
使用智能卡登陆时候会报错“系统不能让您登陆,您不能使用智能卡登陆,因为您的用户账户不支持智能卡登陆...”,在域控制器上有错误信息“EVENT 19:该事件表明试图使用智能卡登录,但是 KDC 无法使用 PKINIT 协议,原因是缺少合适的证书。”,如果使用service stop kdc && service start kdc的话有警告信息:“EVENT 29 密钥发行中心(KDC)找不到相应的证书用于智能卡登录,或者无法验证 KDC 证书。如果不解决该问题,智能卡登录可能不会正常工作。若要更正该问题,请使用 certutil.exe 验证现有的 KDC 证书或注册新的 KDC 证书。”
我们在刚刚安装完测试环境的时候是可以使用的,之前安装过几个CA,后来手动删除了(http://support.microsoft.com/kb/555151),现在我们想找到问题的原因,以便生产部署的时候能够更快完成。
我们重新申请了几次域控制器证书(http://technet.microsoft.com/en-us/library/cc734096.aspx;http://technet.microsoft.com/en-us/library/cc733944(v=ws.10).aspx), certutil -dcinfo verify的结果正常,但是一直有EVENT 19和EVENT 29错误。
请问怎么解决该问题?
使用certutil -dcinfo verify的输出结果是:
0: CTXDC
*** 正在测试 DC[0]: CTXDC
** DC CTXDC 的企业根证书
证书 0:
序列号: 781902753c5627b64bd4e45c38b648df
颁发者: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
NotBefore: 2013/4/11 11:57
NotAfter: 2018/4/11 12:07
使用者: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
证书模板名称 (证书类型): CA
CA 版本: V0.0
签名与公钥匹配
根证书: 使用者与颁发者匹配
模板: CA, 根证书颁发机构
证书哈希(sha1): 24 43 b0 79 33 8d f4 74 2d 52 df 75 3a 50 73 85 62 25 fb 86
** DC CTXDC 的 KDC 证书
证书 0:
序列号: 611648d2000000000030
颁发者: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
NotBefore: 2013/4/21 12:05
NotAfter: 2014/4/21 12:05
使用者: CN=CTXDC.demo2.internal.jiean-technologies.lan
证书模板名称 (证书类型): DomainController
非根证书
模板: DomainController, 域控制器
证书哈希(sha1): e5 e5 5f 80 b0 cd 7f b5 3d 86 51 3e f3 70 d0 8e 39 48 45 cd
dwFlags = CA_VERIFY_FLAGS_NT_AUTH (0x10)
dwFlags = CA_VERIFY_FLAGS_CONSOLE_TRACE (0x20000000)
dwFlags = CA_VERIFY_FLAGS_DUMP_CHAIN (0x40000000)
Application[0] = 1.3.6.1.5.5.7.3.1 服务器身份验证
Application[1] = 1.3.6.1.5.5.7.3.2 客户端身份验证
ChainFlags = CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT (0x40000000)
HCCE_LOCAL_MACHINE
CERT_CHAIN_POLICY_NT_AUTH
-------- CERT_CHAIN_CONTEXT --------
ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
ChainContext.dwRevocationFreshnessTime: 10 Hours, 36 Minutes, 16 Seconds
SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
SimpleChain.dwRevocationFreshnessTime: 10 Hours, 36 Minutes, 16 Seconds
CertContext[0][0]: dwInfoStatus=102 dwErrorStatus=0
Issuer: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
NotBefore: 2013/4/21 12:05
NotAfter: 2014/4/21 12:05
Subject: CN=CTXDC.demo2.internal.jiean-technologies.lan
Serial: 611648d2000000000030
SubjectAltName: Other Name:DS 对象 GUID=04 10 f1 68 15 d4 e6 4a 8c 40 80 c6 15 16 1d 26 49 4d, DNS Name=CTXDC.demo2.internal.jiean-technologies.lan
Template: DomainController
e5 e5 5f 80 b0 cd 7f b5 3d 86 51 3e f3 70 d0 8e 39 48 45 cd
Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
CRL 54:
Issuer: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
52 95 06 73 26 3a 6a 22 a3 6f d7 6e b2 f3 4c 3d 02 9b 7e 54
Delta CRL 55:
Issuer: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
8c c0 97 5e a3 13 9d a1 5c a2 c1 86 e8 65 ff b0 8b ea f4 a3
Application[0] = 1.3.6.1.5.5.7.3.2 客户端身份验证
Application[1] = 1.3.6.1.5.5.7.3.1 服务器身份验证
CertContext[0][1]: dwInfoStatus=10c dwErrorStatus=0
Issuer: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
NotBefore: 2013/4/11 11:57
NotAfter: 2018/4/11 12:07
Subject: CN=demo2CA, DC=demo2, DC=internal, DC=jiean-technologies, DC=lan
Serial: 781902753c5627b64bd4e45c38b648df
Template: CA
24 43 b0 79 33 8d f4 74 2d 52 df 75 3a 50 73 85 62 25 fb 86
Element.dwInfoStatus = CERT_TRUST_HAS_NAME_MATCH_ISSUER (0x4)
Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
Exclude leaf cert:
33 0e 29 2d 44 b0 f9 5d a8 7d 03 26 52 e0 cf 00 4c bf 66 2d
Full chain:
04 60 4a 63 ea 44 36 5a 8a 3e 43 b5 23 2a ee 8e a6 05 16 3b
------------------------------------
已验证的颁发策略: 无
已验证的应用程序策略:
1.3.6.1.5.5.7.3.2 客户端身份验证
1.3.6.1.5.5.7.3.1 服务器身份验证
1 KDC 证书,属于 CTXDC
CertUtil: -DCInfo 命令成功完成。
答案
全部回复
-
对的,我认为根本问题是kdc证书不被认为有效的服务器证书,如果没有域控证书智能卡应该是肯定不能登陆的,实际上EVENT19就是我在尝试用智能卡登录时候报的错误。但是域控制器证书是经过certutil -dcinfo verify测试的,搜了下资料,似乎这个验证不是那么可靠..
我删除了证书颁发机构中CDP中的LDAP,只保留了HTTP的CDP(”包括在CRL中;包括在颁发的CDP扩展中;包括在已发布的IDP扩展中.“)和C:\...的“发布到此位置;发布增量到此位置“。CRL和增量CRL似乎都没有问题,使用浏览器都可以下载查看,与服务器证书里面的描述也一致。IIS7里面增量CRL包括”+“的错误似乎也被修正了(很多2009年的帖子里面提到这个)。我之前碰到Certification Revocation Offline的警告,经过重新配置CA扩展属性中的CDP并重新发布CRL也解决掉了..至少没有Offline警告了
我重新做了个测试环境,又在生产环境里面部署了CA,使用同样的步骤,都没有EVENT 29(我想这是导致EVENT19的原因),但是我还是想知道为什么会出现这个问题,怎么修复。因为一旦生产环境出现这个问题就麻烦大了,重做域环境或者重做CA都是不可以接受的...
有点进展,根据帖子http://social.technet.microsoft.com/Forums/en-US/winserverDS/thread/19759374-c928-450a-96a0-39a7a6003e74/里面的一个说明,我设置了
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\kdc]
"UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors"=dword:00000001
使用net stop kdc && net start kdc之后没有EVENT 29警告了,估计问题是CRL的问题,我再检查一下。
- 已编辑 danslarue 2013年4月22日 14:32
-
是的,看起来CRL在SmartCard登录过程中扮演着非常关键的角色
这篇微软blog就描述CRL的重要性:
Requiring Smart Cards for logon - what happens when CRL publication fails
然后,你真的启用 “UseCachedCRLOnlyAndIgnoreRevocationUnknownErrors” 应该会造成安全隐患,如果将来会封杀一些证书的话。。。