问题描述:
我正在尝试从 Windows 笔记本电脑连接到 TLS 1.0 到 Windows IIS 服务器。我们在 IIS 上设置了相互身份验证。
请看下面为握手所做的调用:
所以它从第 4 帧上的客户端问候开始。然后在接下来的步骤中,服务器发送它的证书并协商密码。然后在第 12 帧,握手似乎结束了。在第 13 帧,客户端开始发送应用程序数据。
但是在第 14 帧上,服务器再次发送了一个问候,我们看到了第二次握手。请您回答我的以下问题。
问题>> 在相互认证中,Client请求Server Certificate。然后服务器请求客户端证书。当他们都验证了对方的证书时,客户端开始发送应用程序数据。这不是正常的相互认证流程吗?
问题>> 在第13帧,客户端已经开始共享应用程序数据。那么为什么 IIS 要求在第 21 帧上进行第二次握手?
问题>> 第二次握手好像是为了获取客户端证书(Frame 24)。但是服务器不应该在第 13 帧之前要求客户端证书。
如果您同意此 IIS 行为是错误的,请您建议如何解决此问题。
提前致谢。
最佳答案
如果服务器不需要对所有资源进行相互身份验证,而是仅在访问特定资源时才需要相互身份验证,就会发生这种情况。因此:
- 没有客户端证书的初始握手已完成(帧 4..12)。
- 客户端发送 HTTP 请求(第 13 帧)。
- 根据请求,服务器意识到客户端喜欢访问需要相互身份验证的资源。因此,服务器使用 Hello 请求(第 14 帧)请求新的握手。
- 新的握手已完成,这次使用客户端证书(帧 15..25)。
- 服务器在客户端认证成功后发送HTTP响应(帧26,29)。
关于ssl - TLS 1.0 发生了什么第二次握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560837/