TLS с SNI в клиентах Java

Существует продолжающееся обсуждение безопасность и доверительная рабочая группа для Прямого NHIN относительно проблемы отображения IP к домену, которая создается с традиционным SSL. Если HISP (как определено Прямым NHIN) захочет разместить тысячи Прямых "медицинских Доменов NHIN" для поставщиков, то он будет "искусственно расширенная стоимость" для покупки IP для каждого из тех доменов.

Поскольку Apache и OpenSSL недавно выпустили TLS с поддержкой расширения SNI, возможно использовать SNI в качестве решения этой проблемы на стороне сервера. Однако, если мы решаем, что позволим реализациям сервера транспортного уровня NHINDirect поддерживать TLS+SNI, затем мы должны потребовать, чтобы все клиенты поддерживали SNI также. Основанные на OpenSSL клиенты должны сделать это по умолчанию, и каждый всегда мог нас stunnel для реализации осведомленного клиента TLS+SNI, чтобы проксировать, если данный язык программирования реализация SSL не поддерживает SNI. Кажется, что собственное использование JAVA-приложений, OpenJDK еще не поддерживают SNI, но я не могу вытащить прямой ответ из того проекта. Я знаю, что существуют доступные библиотеки OpenSSL Java, но я понятия не имею, считали ли это жизнеспособным.

Можно ли дать мне "современную" сводку того, где поддержка TLS+SNI для клиентов Java? Мне нужен взгляд реализаторов Java на это.

8
задан skaffman 30 May 2011 в 19:25
поделиться

1 ответ

Я работаю над тем же проектом, что и ftrotter.

Обратите внимание на требование поддержки тысяч доменов. Я не думаю, что SAN-системы подойдут для этого по двум причинам. Во-первых, размер сертификата станет огромным, что, скорее всего, вызовет проблемы с производительностью, как минимум. Во-вторых, эти домены будут часто появляться и исчезать, особенно в первые дни работы NHIN Direct. Операционное бремя, связанное с необходимостью обновлять сертификат каждый раз, когда домен появляется или исчезает, будет неприемлемым, ИМХО.

По просьбе ftrotter я немного погуглил на тему java, TLS и SNI, а также других способов реализации того, что равносильно ситуации виртуального хостинга на основе имен, с одним сертификатом на виртуальный хост. Вот что я нашел:

  • JSSE (Java Secure Socket Extension) поддерживает TLS и имеет "частичную поддержку" для TLS+SNI. Я понятия не имею, что означает частичная поддержка в данном контексте. Комментарии, которые я вижу, указывают на то, что существующая поддержка не подходит для создания виртуальных хостов на основе имен, что, в общем-то, нам и нужно.

  • Я нашел одну статью, в которой утверждается, что версия JDK7 JSSE будет поддерживать TLS+SNI (от 20.11.2008), и одну, в которой утверждается, что не будет (от 27.2.2009). Ни то, ни другое не является особенно авторитетным.

  • Некоторые из тех, кто работает над OpenJDK 7, обсуждали проблемы добавления поддержки SNI в JSSE еще в феврале-марте 2009 года, включая публикацию исходного патча. (тема начинается здесь: http://www.mail-archive.com/security-dev@openjdk.java.net/msg00612.html). OpenJDK7 будет выпущен не раньше сентября 2010 года. Я понятия не имею, когда будет выпущена платформа Java 7.

  • На java.sun.com вообще нет ничего существенного, так что я действительно не знаю, каковы планы Sun.

  • Существует другой способ реализации виртуальных хостов на основе имен, который, очевидно, широко совместим, с использованием одного сертификата на сервер хостинга, который содержит несколько общих имен и несколько имен subject alt. См. http://wiki.cacert.org/VhostTaskForce и Подавать разные сертификаты для одного приложения Tomcat через коннекторы?

Этот подход создаст действительно большие сертификаты (из-за всех этих CN и SAN), если у вас много виртуальных хостов. Один из участников недавней личной встречи NHIN Direct говорил о том, что хочет поддерживать тысячи виртуальных хостов. Я полагаю, что это приведет к поломке многих реализаций. Кроме того, необходимость обновлять сертификат каждый раз, когда вы добавляете или удаляете виртуальный хост, звучит как нелепое операционное бремя.

В общем, текущее состояние дел в Java для виртуального хостинга на основе имен с отдельными сертификатами для каждого виртуального хоста выглядит как "ничего не получится". Кроме того, неясно, когда и будет ли она добавлена.

Кто-нибудь согласен или не согласен? Кто-нибудь знает, есть ли у проекта OpenJDK намерение "бэкпортировать" поддержку SNI для Java 6?

.
3
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: