TLS 1.0 发生了什么第二次握手

What is second hand-shake happening with TLS 1.0

问题描述:

我正在尝试从 windows 笔记本电脑连接到 Windows IIS 服务器的 TLS 1.0。我们在 IIS 上设置了相互身份验证。

请看下面的握手调用:

所以它从第 4 帧上的客户端问候开始。然后在接下来的步骤中,服务器发送它的证书并协商密码。然后在第 12 帧,握手似乎结束了。在第 13 帧,客户端开始发送应用程序数据。

但是在第 14 帧上,服务器再次发送了一个问候,我们看到了第二次握手。请你回答我下面的问题。

问题>> 相互认证时,客户端请求服务器证书。然后服务器请求客户端证书。当他们都验证了对方的证书时,客户端开始发送应用程序数据。这不是正常的相互认证流程吗?

问题>> 在第13帧,客户端已经开始共享应用程序数据。那么为什么 IIS 要求在第 21 帧上进行第二次握手?

问题>> 第二次握手好像是为了获取客户端证书(Frame 24)。但是服务器不应该在第13帧之前要求客户端证书吗?

如果您同意此 IIS 行为是错误的,请提供解决方法的建议。

提前致谢。

如果服务器不需要对所有资源进行相互身份验证,而是仅在访问特定资源时才需要相互身份验证,就会出现这种情况。因此:

  • 没有客户端证书的初始握手已完成(帧 4..12)。
  • 客户端发送 HTTP 请求(第 13 帧)。
  • 根据请求,服务器意识到客户端喜欢访问需要相互验证的资源。服务器因此使用 Hello 请求(第 14 帧)请求新的握手。
  • 新的握手完成,这次使用客户端证书(帧 15..25)。
  • 服务器在客户端认证成功后发送HTTP响应(帧26,29)。