我了解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握手。 我做了一些干预,试图自己解决,但没有成功
在客户端 :
在服务器端 :
closures浏览器是唯一有效的新的SSL握手,但它会促进不良的用户体验。
那么,如果我正在清理浏览器中的所有数据,closures连接,删除所有活动的数据,并且仍然使用第二个请求中select的第一个证书,直到closures浏览器(终止所有进程),出现错误,或者与浏览器(全部)或与服务器。
如果我的应用程序使用SSL对用户进行身份validation,则不能在不closures浏览器的情况下使用多个login名,这是不对的,应该有重新协商此身份validation的方法。
这遵循HTTP Basic Auth的相同行为,以便浏览器在浏览器会话的持续时间内记住这些凭证,并且不提供将其忘记的方法。