【问题标题】:Force client or server to restart SSL handshake (or expire SSL session)强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)
【发布时间】:2019-07-26 23:32:46
【问题描述】:

我有一个客户端(用 Java 编写)连接到 HTTPS 服务器(也用 Java 编写的服务器)。

客户端证书和可信证书存储在 PKI 令牌中。 客户端不断向服务器发送一些 HTTP 请求。一切正常。现在我想强制客户端(或服务器)重新开始握手。换句话说,我想刷新 SSL 连接,这会导致定期检查服务器证书。有没有办法做到这一点?例如,是否有任何设置可以定期执行此操作,或者证书中是否有任何扩展强制服务器/客户端重新握手?

我知道会话超时。但这不会刷新当前连接。它只会强制新连接再次握手。

【问题讨论】:

  • 为什么要这样做?您认为重新启动连接/握手将解决的最终目标或安全要求是什么?
  • @Polynomial 其实我想重新检查一下 USB 令牌(包含客户端的密钥对和受信任的证书)是否存在,其内容是否定期有效。
  • 那没有回答我的问题。您要缓解什么特定的攻击?
  • @Polynomial 我认为这里没有要反击的威胁。只是重新初始化以检查身份验证令牌是否未更改。这是一个“你还在吗?”这似乎根本不是一个安全问题,而是一个简单的编程问题。
  • 这可能很奇怪,但我不想阻止特定的攻击。我希望 USB 令牌在客户端与服务器一起工作时已经存在,如果用户拒绝 USB 令牌,我想断开与服务器的连接(一段时间后)。

标签: ssl handshake


【解决方案1】:

证书中没有任何内容可用于实现您想要的。相反,这种行为需要在客户端或服务器上实现:服务器可以关闭当前连接并拒绝重用前一个会话,从而导致完全握手。类似地,客户端可以关闭现有连接而不重用会话,这再次导致完全握手。

理论上,客户端或服务器也有可能在现有 TCP 连接中触发新的握手。但通常端点会限制同一 TCP 连接中此类重新协商的数量,以防止 TLS 重新协商 DoS 攻击。

【讨论】:

  • 谢谢。我被这个答案说服了。
猜你喜欢
  • 2018-04-07
  • 2016-09-23
  • 2021-09-17
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多