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

标签 ssl iis mutual-authentication tls1.0

问题描述:

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

请看下面为握手所做的调用:

enter image description here

所以它从第 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/

相关文章:

asp.net - IIS 服务器未加载数据库

ssl - NGINX 说 "client sent no required SSL certificate while reading client request headers"我们如何排除故障?

java - 使用 http2 的 Jetty ssl 工厂不起作用

http - 为什么 HTTPS 比 HTTP 快?

ssl - 使用 j_username 和 j_password 作为输入字段名称是否存在安全风险

asp.net - app_offline.htm 如何处理 IIS/asp.net 中的当前事件 session ?

页面为 SSL 时的 Apache 重定向

c# - 在 asp.net WebService 中未调用 Application_End 时

ssl - 如何使用jetty建立2路SSL认证连接

用于 X.509 客户端身份验证的 Apache + mod_ssl 中间 CA 自动发现