TransportListener
(基本的にHTTPS接続用に特定のポートをリスンするリスナー)が起動するときに、SSLContext
をロードするリアクタパターンの実装があります。 。私は信頼ストアから/に証明書を追加または削除したら共有SSLContextオブジェクトのinit()を再度呼び出すときのSSLEngineへの影響
は、その後、私は(リスナーのメソッドにJMXコールを介して)
sslContext.init(keyManagers, trustManagers, null);
再び同じinit()
メソッドを呼び出します。リスナーのダウンタイムを避けるために、SSLContext
をリロードする必要があります。
これは私が現在直面している問題です。
リスナーに要求があり、接続が確立されたとします。応答がクライアントに返される前にSSLContext
オブジェクトをリロードすると、接続のSSLEngine
オブジェクトのwrap
プロセスが送信前にペイロードを暗号化しますか?
注:リスナーが起動されたとき、私は同じSSLContext
オブジェクトはすべてSSLEngines.The SSLContextオブジェクトに渡されていることを検証していますが、いくつかの他のオブジェクトに渡されます。たとえば、このSSLContextオブジェクトを渡す必要がある接続プールがあります。したがって、新しいSSLContextオブジェクトを作成すると、接続プールが完全に破棄されます。そのため、私は同じSSLContextオブジェクトを使用しようとしています。
あなたが自分でしなければならないことを決める前に、あなた自身でこれをテストすることを妨げるものは何もありませんでした。新しい証明書をロードするたびに*新しい* SSLContextを使用することを止められることはありません。これによってリスナーのダウンタイムも回避されます。同じSSLSessionを複数のSSLEnginesに渡すことはできません。あなたは 'SSLContext'を意味しますか? – EJP
...新しいコンテキストを設定せずにトラストストアを変更することができます。 – eckes
これを他のすべてのユースケースでテストしました。しかし、私は上記のようなシナリオを再現することはできません(応答を送信する前にsslcontextを変更しますが、要求を受け取った後に変更します)。 @eckes私はトラストストアを変更することに問題はありません。私が必要とするのは、 'Listener'を再起動せずに、実行時にトラストストアをリロードすることです。 –