2013-02-26 3 views
5

Java 7 приносит client support for SNI. Известны ли реализации роли сервера SNI с открытым исходным кодом? Java обеспечивает «прозрачную поддержку» TLS-соединений (включая рукопожатие), но мне нужно отделить процесс рукопожатия, чтобы я мог отправить сертификат обратно на основе расширения имени хоста SNI.Поддержка Java для указания имени сервера (SNI) в роли сервера?

После того, как вы не нашли документацию в Интернете, я просмотрел исходный код OpenJDK, но, похоже, я не могу отслеживать сообщение ClientHello, прежде чем Java отправит сообщение ServerHello.

ответ

1

Я не знаю известной реализации с открытым исходным кодом для Java 7, но поддержка SNI сервера - coming in Java 8. Если вы вернете это на Java 7, я бы с удовольствием узнал.

0

Я сам столкнулся с той же проблемой и закончил писать библиотеку с открытым исходным кодом: TLS Channel. Объем библиотеки на самом деле больше: это полная абстракция для SSLEngine (которая серьезно трудно использовать напрямую), подвергая ее как ByteChannel.

Что касается SNI, библиотека выполняет синтаксический анализ первых байтов перед созданием SSLEngine. Затем пользователь может предоставить функцию серверному каналу, чтобы выбрать SSLContexts в зависимости от полученного имени домена.