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

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

在我的实际情况下,要select另一个证书,用户必须closures浏览器并再次打开,但它会给用户带来负面的体验,我想改进它。

该解决scheme为每个请求都进行握手,因此它允许用户select另一个请求。

但是怎么做呢?

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

  • 完整的握手是客户端和服务器彼此不认识时所做的(他们以前没有谈过,或者很久以前)。 在完整握手中,证书被发送,并且发生非对称密码(RSA,Diffie-Hellman …)。
  • 缩略握手是客户端和服务器互相记住的内容; 更准确地说,他们记得在先前的完整握手中build立的algorithm和密钥,并同意重用它们(从技术上讲,它们重用“主密钥”并从中获得新的encryption密钥)。

我可以释放任何cookie,closures选项卡,并禁用保持活动,第二次握手不会打开证书提示。 它使用的是之前select的,而对于Chrome而言,Firefox没有“记住我的决定”的选项。 边缘,歌剧,边缘等相同的发生是否是一个标准?

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

  • 在客户端

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

    • 发送“连接:closures”标题
    • 禁用保持活动

closures浏览器是唯一有效的新的SSL握手,但它会促进不良的用户体验。

那么,如果我正在清理浏览器中的所有数据,closures连接,删除所有活动的数据,并且仍然使用第二个请求中select的第一个证书,直到closures浏览器(终止所有进程),出现错误,或者与浏览器(全部)或与服务器。

如果我的应用程序使用SSL对用户进行身份validation,则不能在不closures浏览器的情况下使用多个login名,这是不对的,应该有重新协商此身份validation的方法。

这遵循HTTP Basic Auth的相同行为,以便浏览器在浏览器会话的持续时间内记住这些凭证,并且不提供将其忘记的方法。