2012-04-17 3 views
3

Можно создать дубликат:
SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0SSLException во время рукопожатия во время возобновления кэшируются сеанс

Мой J2SE приложение использует HttpsURLConnection для доступа безопасное место. Он работал очень хорошо, пока я не обновил JRE до 1.7. Теперь я получаю сообщение «Удаленный хост закрытой связи во время рукопожатия» SSLException. После запуска приложения с использованием -Djavax.net.debug = ssl: рукопожатие, как в JRE 1.6, так и в JRE 1.7, мое впечатление заключается в том, что до 1,7 сеанс кэшированного клиента не возобновляется.

UPDATE: Я понял, что в JRE 1.6 мое клиентское приложение использует инкапсуляцию SSLv2Hello. Однако это не делается в соответствии с JRE 1.7, что, скорее всего, является причиной исключения. Мой вопрос заключается в следующем: как мне включить инкапсуляцию SSLv2Hello для клиентов, работающих на JRE 1.7?

ОБНОВЛЕНИЕ # 2: SSLv2Hello осуществляется на JRE 7 через System.setProperty ("https.protocols", "TLSv1, SSLv2Hello"). Однако это не исключало исключение рукопожатия. Оказывается, истинная причина исключения - это набор шифров. На JRE 6 сервер выбирает SSL_RSA_WITH_RC4_128_MD5 из параметров клиента, тогда как на JRE 7 он всегда идет с TLS_DHE_RSA_WITH_AES_128_CBC_SHA. По какой-то причине сервер не может возобновить кэшированные сеансы, используя TLS_DHE_RSA_WITH_AES_128_CBC_SHA. Проблема исправлена ​​с использованием System.setProperty («https.cipherSuites», предположительно CipherSuites), где предложено CipherSuites всегда начинается с SSL_RSA_WITH_RC4_128_MD5. Любые недостатки с этим подходом?

UPDATE # 3: Расширение SNI клиента - это то, что беспокоит сервер. См. «Указание имени сервера (SNI) для клиента JSSE» по адресу http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements7.html

ответ

3

В конце концов выясняется, что проблема связана с расширением SNI в клиенте JSSE 1.7. Решения отключить отправку SNI записи, перед любым доступом к месту https:

System.setProperty ("jsse.enableSNIExtension", "false"); 

Большого спасибо Eckes для его решения (см SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0).

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