Я пишу приложение, использующее SSLEngine с NIO, я пишу как клиент, так и сервер. Клиент может подключиться к серверу, и после того, как он подключен, я хочу, чтобы он смог выполнить возобновление сеанса/перезаключение, но в настоящее время не повезло.Java JSSE SSLEngine не может возобновить сеанс SSL
Поскольку код, использующий 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?
Спасибо очень очень много - вы только что закончили 3 дня бесконечного googeling :) – bennyl
@bennyl Это не документировано, и это не совсем очевидно, но когда вы думаете об этом это должно быть так ... – EJP
я не думаю, что это должно быть так - поскольку SSLEngine отделен от транспортного уровня, я думал, что, используя тот же SSLContext, чтобы создать 2 SSLEngines, они будут использовать один и тот же SSLS-кэш ... – bennyl