获取新证书以替换服务器上的过期证书后,客户端无法向服务器进行身份验证

本文提供了在获取新证书以替换服务器上过期证书后客户端无法向服务器进行身份验证的问题的解决方案。

原始 KB 数: 822406

现象

将过期的证书替换为运行 Microsoft Internet 身份验证服务(IAS)或路由和远程访问的服务器上的新证书后,配置为验证服务器证书的可扩展身份验证协议传输层安全性(EAP-TLS)的客户端无法再向服务器进行身份验证。 在客户端计算机上查看系统登录事件查看器时,将显示以下事件。

如果在运行 IAS 或路由和远程访问(例如,通过运行 netsh ras set tracing * enable 命令)的服务器上启用详细日志记录,则会在客户端尝试进行身份验证时生成的Rastls.log文件中显示如下信息。

注意

如果使用 IAS 作为 Radius 服务器进行身份验证,则 IAS 服务器上会显示此行为。 如果使用路由和远程访问,并且已针对 Windows 身份验证(而不是 Radius 身份验证)配置路由和远程访问,则会在路由和远程访问服务器上看到此行为。

[1072] 15:47:57:280: CRYPT_E_NO_REVOCATION_CHECK不会被忽略

[1072] 15:47:57:280: CRYPT_E_REVOCATION_OFFLINE不会被忽略

[1072] 15:47:57:280:不会检查根证书是否吊销

[1072] 15:47:57:280:证书将检查吊销

[1072] 15:47:57:280:

[1072] 15:47:57:280: EapTlsMakeMessage(示例\client)

[1072] 15:47:57:280: >> 接收响应(代码:2)数据包:ID:11,长度:25,类型:0,TLS blob 长度:0。 Flags:

[1072] 15:47:57:280: EapTlsSMakeMessage

[1072] 15:47:57:280: EapTlsReset

[1072] 15:47:57:280:状态更改为 Initial

[1072] 15:47:57:280: GetCredentials

[1072] 15:47:57:280:证书中的名称为:server.example.com

[1072] 15:47:57:312: BuildPacket

[1072] 15:47:57:312: << 发送请求(代码:1)数据包:ID:12,长度:6,类型:13,TLS Blob 长度:0。 标志:S

[1072] 15:47:57:312:状态更改为 SentStart

[1072] 15:47:57:312:

[1072] 15:47:57:312: EapTlsEnd(示例\client)

[1072] 15:47:57:312:

[1072] 15:47:57:312: EapTlsEnd(示例\client)

[1072] 15:47:57:452:

[1072] 15:47:57:452: EapTlsMakeMessage(示例\client)

[1072] 15:47:57:452: >> 接收的响应(代码:2)数据包:ID:12,长度:80,类型:13,TLS blob 长度:70。 标志:L

[1072] 15:47:57:452: EapTlsSMakeMessage

[1072] 15:47:57:452: MakeReplyMessage

[1072] 15:47:57:452:重新分配输入 TLS Blob 缓冲区

[1072] 15:47:57:452: SecurityContextFunction

[1072] 15:47:57:671:状态更改为 SentHello

[1072] 15:47:57:671: BuildPacket

[1072] 15:47:57:671: << 发送请求(代码:1)数据包:ID: 13,长度: 1498,类型:13,TLS blob 长度:3874。 标志:LM

[1072] 15:47:57:702:

[1072] 15:47:57:702: EapTlsMakeMessage(示例\client)

[1072] 15:47:57:702: >> 接收的响应(代码:2)数据包:ID: 13,长度: 6,类型:13,TLS blob 长度:0。 Flags:

[1072] 15:47:57:702: EapTlsSMakeMessage

[1072] 15:47:57:702: BuildPacket

[1072] 15:47:57:702: << 发送请求(代码:1)数据包:ID:14,长度:1498,类型:13,TLS blob 长度:0。 标志:M

[1072] 15:47:57:718:

[1072] 15:47:57:718: EapTlsMakeMessage(示例\client)

[1072] 15:47:57:718: >> 接收的响应(代码:2)数据包:ID:14,长度:6,类型:13,TLS Blob 长度:0。 Flags:

[1072] 15:47:57:718: EapTlsSMakeMessage

[1072] 15:47:57:718: BuildPacket

[1072] 15:47:57:718: << 发送请求(代码:1)数据包:ID:15,长度:900,类型:13,TLS blob 长度:0。 Flags:

[1072] 15:48:12:905:

[1072] 15:48:12:905: EapTlsMakeMessage(示例\client)

[1072] 15:48:12:905: >> 接收的响应(代码:2)数据包:ID:15,长度:6,类型:13,TLS Blob 长度:0。 Flags:

[1072] 15:48:12:905: EapTlsSMakeMessage

[1072] 15:48:12:905: MakeReplyMessage

[1072] 15:48:12:905: SecurityContextFunction

[1072] 15:48:12:905:状态更改为 SentFinished。 错误:0x80090318

[1072] 15:48:12:905:谈判失败

[1072] 15:48:12:905: BuildPacket

[1072] 15:48:12:905: << 发送失败(代码:4)数据包:ID:15,长度:4,类型:0,TLS blob le

原因

如果满足以下所有条件,则可能会出现此问题:

  • IAS 或路由和远程访问服务器是域成员,但域中未配置自动证书请求功能(自动注册)。 或者,IAS 或路由和远程访问服务器不是域成员。
  • 手动请求并接收 IAS 或路由和远程访问服务器的新证书。
  • 不会从 IAS 或路由和远程访问服务器中删除过期的证书。 如果 IAS 或路由和远程访问服务器上存在过期的证书以及新的有效证书,则客户端身份验证不会成功。 客户端计算机上的事件日志中显示的“错误0x80090328”结果对应于“过期的证书”。

解决方法

若要解决此问题,请删除过期的(已存档)证书。 要执行此操作,请执行以下步骤:

  1. 打开在 IAS 服务器上管理证书存储的Microsoft管理控制台(MMC)管理单元。 如果还没有 MMC 管理单元可以查看证书存储,请创建一个。 为此,请执行以下操作:
    1. 选择“开始”,选择“运行,在“打开”框中键入 mmc,然后选择“确定”。

    2. 控制台菜单上(Windows Server 2003 中的“文件”菜单),选择“添加/删除管理单元”,然后选择“添加”。

    3. “可用独立管理单元”列表中,依次选择“证书”、“添加”、“计算机帐户”、“下一步”,然后选择“完成”。

      注意

      还可以将用户帐户的证书管理单元和服务帐户添加到此 MMC 管理单元。

    4. 选择“关闭”,然后选择“确定”

  2. 在控制台根,选择“证书”(本地计算机)。
  3. “视图 ”菜单上,选择“ 选项”。
  4. 单击以选中 “存档证书 ”复选框,然后选择“ 确定”。
  5. 展开 “个人”,然后选择“ 证书”。
  6. 右键单击过期的数字证书,选择“删除,然后选择“是以确认删除过期的证书。
  7. 退出 MMC 管理单元。 无需重启计算机或任何服务即可完成此过程。

详细信息

Microsoft建议配置自动证书请求以续订组织中的数字证书。 有关详细信息,请参阅 Windows XP 中的证书自动注册