2015-04-22 4 views
0

Я использую провайдер JSSE по умолчанию в Java 6 (SunJSSE), как это так,Безопасен ли SSLContext.createSSLEngine()?

SSLContext sslCtx = SSLContext.getInstance("TLS");

Могу ли я вызвать метод sslCtx.createSSLEngine() безопасно из нескольких потоков?

Update 1: код, который звонит createSSLEngine() таким способом выполняется только на стороне сервера. В принципе, поток вызывает этот метод для каждого клиента, который подключается к серверу.

+0

Это не так, но я никогда не беспокоился об этом и никогда не был пойман. Однако вы должны называть 'SSLContext.createSSLEngine (String host, int port)', если это возможно, иначе вы не получите никакого обмена SSLSession. – EJP

+0

@EJP Я мог найти только [этот старый пост] (http://dev.mina.apache.narkive.com/VVCDUDuQ/sslfilter-and-ssl-session-reuse), в котором упоминается повторное использование SSLSession. Однако он говорит, что это влияет только на клиентский код. У вас есть дополнительная информация по этому вопросу? –

+0

Неправильно. Сервер также участвует в повторном использовании сеанса, и SSLEngine имеет только такой способ узнать, кто такой сверстник, и какие сеансы с ним равны. – EJP

ответ

2

Звонок SSLContext.createSSLEngine() кажется потокобезопасным. По крайней мере, на основании того, что приложение не сработало с какой-либо ошибкой, связанной с расы.

При попытке найти окончательный ответ я загрузил исходный код OpenJDK6 b27 и посмотрел на него. Я предполагаю, что, конечно, что это тот же самый код, который находится внутри JRE в Oracle 6.

Когда SSLContext.createSSLEngine() называется, это в свою очередь вызывает абстрактный метод engineCreateSSLEngine() на то, что реализация имеет в javax.net.ssl.SSLContextSpi класса. В этом случае реализация равна sun.security.ssl.SSLContextImpl. Реализация метода engineCreateSSLEngine(), предоставленного SSLContextImpl, просто возвращает новый экземпляр sun.security.ssl.SSLEngineImpl, вызвав конструктор SSLEngineImpl(SSLContextImpl ctx).

Проверяя код, я не нашел ничего, что могло бы предложить возможную небезопасную работу.

Смежные вопросы