mendapatkan javax.net.ssl.SSLException: Data MAC tidak cocok saat membuat koneksi TLS

![masukkan deskripsi gambar di sini][1] ![masukkan deskripsi gambar di sini][2] ![masukkan deskripsi gambar di sini][3]

Saya mencoba membuat koneksi aman antara klien dan server. Klien mendukung TLSv1.2 dan Server mendukung TLSv1.0. Namun mendapatkan pengecualian "javax.net.ssl.SSLException: data MAC tidak cocok".

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)

Saya memeriksa kode saya, protokol yang diaktifkan adalah SSLv3, TLSv1, TLSv1.1 dan TLSv1.2 menggunakan metode getEnabledProtocols(). Saya telah membaca di rfc TLSv1.2 bahwa jika server mendukung TLS versi lebih rendah maka klien, klien harus bernegosiasi dengan TLS versi lebih rendah.

Namun dalam kasus saya, saya mendapatkan pengecualian di atas. (mengapa ??... itu tidak boleh terjadi dan bernegosiasi dengan TLSv1).

CATATAN : Selain itu, jika saya menetapkan protokol yang diaktifkan sebagai TLSv1 saja, maka saya dapat membuat koneksi TLS.

Tolong bantu saya. Terima kasih

  [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 sumber
comment
Saya kira negosiasinya tidak berjalan dengan baik. Tapi saya tidak bisa berkomentar lebih banyak karena memerlukan tangkapan layar pcap dengan Wireshark dan melihat pesan ServerHello yang dikirim oleh server.   -  person Narendra Pathai    schedule 12.09.2013
comment
Ada perbedaan besar dalam cara kerja enkripsi dan dekripsi di TLS1.2 sebagaimana seharusnya di TLS1.0 sehingga Anda mendapatkan kesalahan ini.   -  person Narendra Pathai    schedule 12.09.2013
comment
Saya telah melampirkan tangkapan layar pcap , server hello dan client hello. Saya juga telah membaca bahwa TLS 1.2 kompatibel ke belakang, jadi harus dinegosiasikan...kan?   -  person Vivone    schedule 12.09.2013
comment
@Narendra Pathai satu pertanyaan lagi ... data mac tidak cocok dan bad_mac_record apakah kesalahannya sama atau berbeda?   -  person Vivone    schedule 12.09.2013
comment
Keduanya AFAIK yang sama. Itu hanya mungkin ketika proses dekripsi mendekripsi beberapa nilai yang tidak valid dan menemukan MAC tidak valid.   -  person Narendra Pathai    schedule 12.09.2013
comment
Saya telah melihat pcapsnya dan dapatkah Anda juga membagikan detail Sertifikat, pertukaran Kunci Klien dengan memperluasnya? Saya hanya ingin memeriksa respons klien terhadap Server Hello.   -  person Narendra Pathai    schedule 13.09.2013
comment
Jenis layanan apa yang Anda gunakan? Apakah Anda memerlukan Ekstensi Kriptografi Java?   -  person jwilleke    schedule 13.09.2013


Jawaban (1)


Ini jelas merupakan masalah versi yang tidak kompatibel. Satu hal yang pasti adalah TLS adalah nama baru untuk SSL. Yaitu, protokol SSL mencapai versi 3.0; TLS 1.0 adalah "SSL 3.1". Versi TLS yang saat ini ditentukan mencakup TLS 1.1 dan 1.2.

Juga, tautan wiki berikut (http://en.wikipedia.org/wiki/Transport_Layer_Security) menunjukkan bahwa

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.

Juga antara TLS dan SSL, MAC/HMAC berbeda (TLS menggunakan HMAC sedangkan SSL menggunakan HMAC versi sebelumnya). Saya curiga entah bagaimana kode Anda mungkin masih memilih SSL untuk kami. Bisakah Anda menonaktifkan SSL dan coba lagi?

person Gyanendra Dwivedi    schedule 12.09.2013
comment
tapi saya menggunakan tlsv1.2 dan tlsv1. Silakan temukan gambar pcap. - person Vivone; 12.09.2013