Как реализовать NIO с SSL в Java?

#java #ssl #nio

#java #ssl #nio

Вопрос:

Я хочу реализовать SSL поверх своего Java-приложения с помощью NIO. Искали в Интернете то же самое, но не смогли продолжить. Пример кода реализации был бы большим подспорьем.

Комментарии:

1. Ваш вопрос неясен: вы хотите реализовать протокол SSL самостоятельно или вы хотите передавать данные по защищенному SSL туннелю?

2. Сначала нажмите на Google для «nio ssl»: onjava.com/onjava/2004/11/03/ssl-nio.html Вы действительно искали «в Интернете»?

3. в Google есть много чего. Например rox-xmlrpc.sourceforge.net/niotut/index.html#NIO и SSL на 1.4

4. Как насчет jboss netty? Проверьте jboss.org/netty

Ответ №1:

С SSLEngine, но имейте в виду, что это не шутка. В JDK есть некоторый пример кода, но он делает некоторые довольно несостоятельные предположения, такие как только одно рукопожатие на соединение, только в режиме клиента и т.д. Интеграция с селектором особенно проблематична.

Ответ №2:

Как сказал Фрик, посмотрите на netty из Jboss. В их разделе документации есть пример с использованием SSL.

Ответ №3:

SSLEngine — это стандартный способ выполнения SSL / TLS с NIO в Java.

Но это серьезно сложно в использовании и не рекомендуется для приложений, которым просто нужен защищенный сокет.

К счастью, существует по крайней мере одна альтернатива библиотеке: канал TLS обертывает SSLContext (или SSLEngine) и предоставляет интерфейс байтового канала, выполняя тяжелую работу внутри.

(Отказ от ответственности: я являюсь основным автором библиотеки)