получение javax.net.ssl.SSLException: данные MAC не совпадают при создании соединения TLS

![введите сюда описание изображения][1] ![введите сюда описание изображения][2] ![введите сюда описание изображения][3]

Я пытаюсь создать безопасное соединение между клиентом и сервером. Клиент поддерживает TLSv1.2, а сервер поддерживает TLSv1.0. Но получение исключения «javax.net.ssl.SSLException: данные MAC не совпадают».

here is the printstacktrace :

    javax.net.ssl.SSLException: MAC data does not match.
            at com.rsa.sslj.x.aJ.b(Unknown Source)
            at com.rsa.sslj.x.aJ.a(Unknown Source)
            at com.rsa.sslj.x.aJ.a(Unknown Source)
            at com.rsa.sslj.x.aU.c(Unknown Source)
            at com.rsa.sslj.x.aU.a(Unknown Source)
            at com.rsa.sslj.x.aU.h(Unknown Source)
            at com.rsa.sslj.x.cI.startHandshake(Unknown Source)
            at com.sun.jndi.ldap.ext.StartTlsResponseImpl.startHandshake(StartTlsResponseImpl.java:361)
            at com.sun.jndi.ldap.ext.StartTlsResponseImpl.negotiate(StartTlsResponseImpl.java:225)
            at com.cisco.ccm.admin.utilities.LdapUtil.validateHost(LdapUtil.java:383)
            at com.cisco.ccm.admin.utilities.LdapUtil.validateHost(LdapUtil.java:289)

Я проверил в своем коде включенные протоколы SSLv3, TLSv1, TLSv1.1 и TLSv1.2, используя метод getEnabledProtocols(). Я прочитал в rfc TLSv1.2, что если сервер поддерживает более низкую версию TLS, то клиент, клиент должен согласовать с более низкой версией TLS.

Но в моем случае я получаю указанное выше исключение (почему ??... этого не должно происходить и согласовать с TLSv1).

ПРИМЕЧАНИЕ. Кроме того, если я установлю включенный протокол только как TLSv1, я смогу создать соединение TLS.

Пожалуйста, помогите мне. Спасибо

  [1]: http://i.stack.imgur.com/RC4Ha.jpg
  [2]: http://i.stack.imgur.com/rjXjq.jpg
  [3]: http://i.stack.imgur.com/WIRvF.jpg

person Vivone    schedule 12.09.2013    source источник
comment
Я предполагаю, что переговоры не работают должным образом. Но я не могу больше комментировать, так как мне понадобится скриншот pcap с wirehark и увидеть сообщение ServerHello, отправляемое сервером.   -  person Narendra Pathai    schedule 12.09.2013
comment
Существует большая разница в том, как шифрование и дешифрование работают в TLS1.2 по сравнению с TLS1.0, поэтому вы получаете эту ошибку.   -  person Narendra Pathai    schedule 12.09.2013
comment
Я прикрепил скриншот pcap , приветствия сервера и приветствия клиента. Также я читал, что TLS 1.2 совместим с предыдущими версиями, поэтому он должен вести переговоры... верно?   -  person Vivone    schedule 12.09.2013
comment
@Narendra Pathai еще один вопрос ... данные Mac не совпадают, а bad_mac_record - это одинаковые ошибки или разные?   -  person Vivone    schedule 12.09.2013
comment
Оба одинаковы AFAIK. Это возможно только тогда, когда процесс дешифрования расшифровал какое-то недопустимое значение и обнаружил, что MAC-адрес недействителен.   -  person Narendra Pathai    schedule 12.09.2013
comment
Я видел pcaps, и можете ли вы также поделиться подробностями обмена сертификатами и ключами клиентов, расширив их? Я просто хочу проверить ответ клиента на Server Hello.   -  person Narendra Pathai    schedule 13.09.2013
comment
Какой вид услуг вы используете? Вам нужно расширение Java Cryptography Extension?   -  person jwilleke    schedule 13.09.2013


Ответы (1)


Это определенно проблема несовместимости версий. Одно можно сказать наверняка: TLS — это новое имя для SSL. А именно, протокол SSL дошел до версии 3.0; TLS 1.0 — это «SSL 3.1». Определенные в настоящее время версии TLS включают TLS 1.1 и 1.2.

Кроме того, следующая вики-ссылка (http://en.wikipedia.org/wiki/Transport_Layer_Security) показывает, что

All TLS versions were further refined in RFC 6176 in March 2011 removing their backward compatibility with SSL such that TLS sessions will never negotiate the use of Secure Sockets Layer (SSL) version 2.0.

Также между TLS и SSL различаются MAC/HMAC (TLS использует HMAC, тогда как SSL использует более раннюю версию HMAC). Я подозреваю, что каким-то образом ваш код все еще может выбирать нас SSL. Не могли бы вы отключить SSL и повторить попытку?

person Gyanendra Dwivedi    schedule 12.09.2013
comment
но я использую tlsv1.2 и tlsv1. Пожалуйста, найдите изображения pcap. - person Vivone; 12.09.2013