当前位置: 首页 > 面试题库 >

Java JSSE SSLEngine无法恢复SSL会话

班玉堂
2023-03-14
问题内容

我正在编写将SSLEngine与NIO结合使用的应用程序,同时编写了客户端和服务器。客户端能够连接到服务器,并且在他连接之后,我希望他能够执行会话恢复/重新协商,但是目前没有运气。

由于使用SSLEngine的代码相当大(SSLEngine的使用是如此复杂!),我将编写一个简单的伪代码来演示这种情况:

Server:
    global sslcontext initialized once
    await new client
    client.sslEngine = create new server ssl engine using the global sslcontext
    client.handleHandshake and wait for it to be done
    handle client.

Client:
    global sslcontext initialized once
    sslEngine = create new client ssl engine using the global sslcontext
    performHandshake and wait for it to be done
    disconnect (close gracefully the connection)
    sslEngine = create new client ssl engine using the global sslcontext
    configure engine to not allow session creation
    performHandshake and wait for it to be done

**我更愿意发布可以提供帮助的代码的任何部分(即使是完整的代码,尽管正如我所说的那样巨大。)

当我执行程序时,第一个连接成功,但是第二个导致异常:

javax.net.ssl.SSLHandshakeException: No existing session to resume

我错过了恢复ssl会话所需的某些成分吗?


问题答案:

如果您使用SSLContext.createEngine(host,port)创建SSLEngine,则SSLEngine将仅恢复会话。否则,它无法知道正在与谁交谈,因此无法知道SSLSession会加入什么。



 类似资料:
  • 我正在编写一个使用SSLEngine和NIO的应用程序,我同时编写客户机和服务器。客户端能够连接到服务器,并且在他连接之后,我希望他能够执行会话恢复/重新协商,但目前没有运气… 因为使用SSLEngine的代码相当大(SSLEngine的使用非常复杂!)我将编写一个简单的伪代码来演示这种情况: 当我执行我的程序时,第一个连接是成功的,但是第二个导致异常: 我是否遗漏了ssl会话恢复所需的某些成分?

  • 我有一个cordova应用程序,我有一个登录页面和一个登录用户的内页。每当用户会话消失时,它就会请求登录信息。如何防止ths cordova应用程序在重启移动应用程序时删除会话uppon重启或恢复cookie和会话信息?所以登录屏幕不会每次都出现?

  • 我已经搜索了StackOverflow一段时间,但我只是想确定...

  • 我已经开发并上传了我的应用程序到Google Play商店,现在我试图上传更新,但Android Studio不让我创建一个签名的APK,我确信我的密码和别名都是正确的。 会有其他方法来解决这个问题吗?或者有没有办法把Keystore转移到另一个Keystore,这样我就可以在Google Play商店更新我的应用程序 PS.我正在使用Android Studio北极狐,仍然有同样的问题。 任何帮

  • 问题内容: 在defer函数中,我想查看一次恢复调用是否会产生非nil值(不恢复) 可能吗? 问题答案: 那确切的事情是不可能的。您可能只想重新恐慌,就像在其他语言中重新引发异常一样。

  • 我是ElasticSearch的新手,我遵循这里的说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html 每当我运行“docker compose up”时,Kibana总是说“无法恢复连接”,但如果我运行curlhttp://localhost:9200,我会得到回复: 下面是我的docker