У меня есть реализация шаблона реактора, в котором я загружаю SSLContext
, когда TransportListener
(в основном прослушиватель прослушивателя на данном порту для соединений HTTPS) запускается ,Эффект для SSLEngine при вызове init() общего объекта SSLContext снова
Тогда я называю тот же метод init()
снова (через JMX вызова метода слушателя)
sslContext.init(keyManagers, trustManagers, null);
один раз добавить или удалить сертификат в/из хранилища доверенных. Я должен перезагрузить SSLContext
во избежание простоя в слушателе.
Так что это проблема, с которой я сейчас сталкиваюсь.
Предположим, что запрос пришел к слушателю и установлено соединение. Если я перезагрузите объект SSLContext
до того, как ответ будет возвращен клиенту, это повлияет на процесс объекта соединения, который шифрует полезную нагрузку перед отправкой?
Примечание: Я подтверждено, что тот же SSLContext
объект передается всему объекту SSLEngines.The SSLContext передается нескольким другим объектам, когда слушатель начинает. Например, у меня есть пул соединений, к которому я должен передать этот объект SSLContext. Поэтому создание нового объекта SSLContext полностью разрушит существующие соединения - это пул соединений. Вот почему я пытаюсь использовать один и тот же объект SSLContext.
Не было ничего, что мешало бы вам испытать это для себя * перед тем, как решиться на то, что вам нужно делать. Ничто не мешает вам начать использовать * новый * 'SSLContext' всякий раз, когда вы загружаете новый сертификат: это также позволит избежать простоя в слушателе. Вы не можете передать один и тот же «SSLSession» любым «SSLEngines» вообще, не говоря уже о нескольких. Вы имеете в виду 'SSLContext'? – EJP
... и вы можете изменить доверительное хранилище, не настраивая новый контекст. – eckes
Я проверил это для всех других случаев использования. Но я не могу воспроизвести такой сценарий, как то, что я упомянул выше (измените sslcontext перед отправкой ответа, но после получения запроса). @eckes У меня нет проблемы с изменением хранилища доверия. Мне нужно перезагрузить хранилище доверия во время выполнения без перезапуска «Listener». –