Я работаю над тем же проектом, что и ftrotter.
Обратите внимание на требование поддержки тысяч доменов. Я не думаю, что SAN собираются сократить горчицу по двум причинам. Во-первых, размер сертификата станет огромным, что, скорее всего, приведет к проблемам с производительностью как минимум. Во-вторых, эти домены будут приходить и уходить часто, особенно в первые дни NHIN Direct. Оперативное бремя обновления сертификата каждый раз, когда домен приходит или уходит, будет неприемлемым, ИМХО.
По запросу ftrotter я немного погуглил на предмет java, TLS и SNI и других способов реализации того, что равнозначно ситуации с виртуальным хостингом на основе имен, с одним сертификатом на виртуальный хост. Вот что я придумала:
JSSE (Java Secure Socket Extension) поддерживает TLS и имеет «частичную поддержку» для TLS + SNI. Я понятия не имею, что означает частичная поддержка в этом контексте. Комментарий, который я вижу, указывает на то, что существующая поддержка не подходит для создания виртуальных хостов на основе имен, что, в основном, нам и нужно.
Я нашел одну статью, в которой утверждается, что версия JSSE для JDK7 будет поддерживать TLS + SNI (от 20.11.2008), и я нашел одну, которая утверждает, что она выиграла ' т (от 27.02.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 вообще.
Существует, очевидно, другой способ создания виртуальных хостов на основе имен, который, по-видимому, широко совместим, используя один сертификат для каждого хост-сервера, который содержит несколько общих имен и несколько альтернативных имен субъектов. См. http://wiki.cacert.org/VhostTaskForce и Предоставлять разные сертификаты для одного и того же приложения Tomcat через разъемы?
Этот подход будет создавать действительно большие сертификаты (из-за всех этих CN и SAN), если у вас много виртуальных хостов. Один из участников недавней личной встречи NHIN Direct говорил о желании поддержать тысяч виртуальных хостов. Я предполагаю, что это сломает много реализаций. Кроме того, необходимость обновлять сертификат каждый раз, когда вы добавляете или удаляете виртуальный хост, звучит как нелепая операционная нагрузка.
Таким образом, текущее состояние Java для виртуального хостинга на основе имен с отдельными сертификатами для каждого виртуального хоста, похоже, "не может делать". Кроме того, неясно, когда или если он будет добавлен.
Кто-нибудь соглашается или не соглашается? Кто-нибудь знает, есть ли у проекта OpenJDK какие-либо намерения «перенести» поддержку SNI для Java 6?