如何禁用缩写 SSL 握手以在每次调用 lighttpd 时执行完整握手?

Leo*_*lho 5 ssl lighttpd php-fpm ssl-certificate

我了解 ssl 握手流程,但我面临逻辑问题。当用户选择证书时,我需要根据应用程序对其进行验证,以了解其是否可靠并与任何系统用户匹配。但如果没有,我必须允许用户再次要求选择另一个。也许用户在他们的机器上安装了多个证书并错误地选择了错误的证书。

在我的实际场景中,要选择另一个证书,用户必须关闭浏览器并再次打开,但它会给用户体验带来负面影响,我想改进它。

该解决方案对每个请求都进行一次握手,因此它允许用户选择另一个请求。

但是怎么做呢?

我发现的最相关的问题是https://security.stackexchange.com/questions/56623/avoiding-ssl-handshake-for-each-call

  • 完整的握手是一个什么样的客户端和服务器做的时候,他们不知道对方(他们以前从来没有聊过,或者说是很久以前)。在完全握手中,发送证书,并发生非对称加密(RSA、Diffie-Hellman...)。
  • 缩写握手是什么客户端和服务器记住对方; 更准确地说,他们记住了他们在之前的完全握手中建立的算法和密钥,并同意重用它们(从技术上讲,他们重用“主秘密”并从中派生出用于此连接的新加密密钥)。

我可以释放任何 cookie,关闭选项卡并禁用保持活动状态,第二次握手不会打开证书提示。它使用的是先前选择的,例如对于 chrome,没有“记住我的决定”选项,Firefox 有。Edge、Opera、Edge 等也会发生同样的情况。它是标准吗?

我猜,它可以由服务器端控制,请求一个新的 SSL 握手。我做了一些干预尝试自己解决它,但没有成功

  • 在客户端

    • 清除所有数据,甚至历史记录。
    • 在另一个子域中打开 cookieless
  • 在服务器端

    • 发送“连接:关闭”标头
    • 禁用保持活动

关闭浏览器是唯一对新 SSL Handshake 有效的方法,但它会带来糟糕的用户体验。

好吧,如果我正在清除浏览器中的所有数据,关闭连接,删除任何活动的数据,并且在我关闭浏览器(终止所有进程)之前它仍在使用第二个请求中选择的第一个证书,则有问题,或者使用浏览器(全部)或服务器。

如果我的应用程序使用 SSL 对用户进行身份验证,我不能在不关闭浏览器的情况下使用多次登录,这是不对的,它应该有办法重新协商此身份验证。

Jas*_*tin 1

这遵循 HTTP 基本身份验证的相同行为,以便浏览器在浏览器会话期间记住这些凭据,并且不提供忘记它的方法。