SSL Handshake Alert: Unrecognized_Name Error Muncul Semula dengan Java 1.7.0 Naik Taraf
Susulan peningkatan daripada Java 1.6 hingga 1.7, pengguna mungkin menghadapi masalah Makluman jabat tangan SSL dicirikan oleh mesej ralat "unrecognized_name." Isu ini timbul khususnya apabila mewujudkan sambungan SSL ke pelayan web.
Ralat berpunca daripada pengenalan sokongan SNI (Petunjuk Nama Pelayan) dalam Java 7, yang didayakan secara lalai. Pelayan tersalah konfigurasi tertentu bertindak balas dengan amaran "Nama Tidak Dikenali" semasa jabat tangan, yang diabaikan oleh kebanyakan pelanggan tetapi bukan Java.
Pilihan Penyelesaian:
Jurutera Oracle telah menolak untuk menangani isu ini. Walau bagaimanapun, dua penyelesaian utama tersedia:
Lumpuhkan SNI:
Perhatikan bahawa melumpuhkan SNI menjejaskan keseluruhan aplikasi.
Kendalikan Pelayan Tersalah Konfigurasi:
Untuk pendekatan yang lebih disasarkan, gunakan yang berikut langkah:
Contoh Kod:
SSLSocketFactory factory = (SSLSocketFactory) SSLContext.getDefault().getSocketFactory(); SSLSocket sslsock = (SSLSocket) factory.createSocket(host, 443); try { sslsock.startHandshake(); } catch (SSLException e) { if (e.getMessage().equals("handshake alert: unrecognized_name")) { sslsock = (SSLSocket) factory.createSocket(host, 443); sslsock.startHandshake(); } else { // Handle other errors } }
Kesimpulan:
Dengan melaksanakan penyelesaian yang diterangkan, pengguna boleh mengurangkan ralat "unrecognized_name" apabila menggunakan Java 1.7.0 dan berinteraksi dengan salah konfigurasi pelayan sambil mengekalkan keupayaan SNI untuk sambungan lain.
Atas ialah kandungan terperinci Mengapakah Java 1.7.0 Menghasilkan Makluman Jabat Tangan SSL 'unrecognized_name', dan Bagaimana Ia Boleh Diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!