Rumah > Java > javaTutorial > Mengapa Saya Mendapat Makluman Jabat Tangan SSL 'unrecognized_name' Selepas Menaik taraf kepada Java 1.7?

Mengapa Saya Mendapat Makluman Jabat Tangan SSL 'unrecognized_name' Selepas Menaik taraf kepada Java 1.7?

DDD
Lepaskan: 2024-12-07 07:12:10
asal
759 orang telah melayarinya

Why Am I Getting an

Makluman Jabat Tangan SSL: Isu Nama Tidak Dikenali selepas Menaik taraf ke Java 1.7.0

Setelah menaik taraf daripada Java 1.6 hingga 1.7, pengguna mungkin menghadapi masalah Amaran SSLHandshake dengan mesej ralat "unrecognized_name" semasa membuat SSL sambungan ke pelayan web. Ralat ini disebabkan terutamanya oleh pengenalan Java 7 bagi sokongan Petunjuk Nama Pelayan (SNI), yang didayakan secara lalai.

Untuk menyelesaikan isu ini, terdapat beberapa pilihan yang tersedia:

  • Lumpuhkan SNI:

Untuk melumpuhkan SNI secara global, baris arahan berikut hujah boleh digunakan semasa menjalankan aplikasi:

-Djsse.enableSNIExtension=false
Salin selepas log masuk

Sebagai alternatif, sifat boleh ditetapkan secara pemrograman sebelum sebarang tindakan SSL dilakukan:

System.setProperty("jsse.enableSNIExtension", "false");
Salin selepas log masuk

Walau bagaimanapun, melumpuhkan SNI mungkin mempunyai implikasi untuk aplikasi yang memerlukan fungsinya.

  • Kendalikan Nama Tidak Dikenali Makluman:

Pendekatan lain melibatkan pengendalian makluman "unrecognized_name" dengan lebih anggun. Langkah-langkah berikut boleh diambil:

// Create an SSLSocket with the desired hostname
SSLSocket sslsock = ...

// Attempt handshake
try {
    // This will block until the attempt succeeds or fails.
    sslsock.startHandshake();
} catch (SSLException e) {
    // Handle the exception here. If it contains the "unrecognized_name" message, disable SNI and retry.
}

// Disable SNI and retry handshake without hostname
if (e.getMessage().contains("unrecognized_name")) {
    sslsock = ... // Create an SSLSocket without specifying a hostname
    sslsock.startHandshake();
}
Salin selepas log masuk
  • Benarkan Sijil Tidak Dipercayai:

Kod yang diberikan cuba menyambung ke pelayan yang tidak dipercayai sijil. Untuk mengurangkan perkara ini, pertimbangkan untuk melaksanakan pengurusan amanah tersuai atau menggunakan pengurus amanah terbina dalam:

// Custom trust management (for untrusted certificates)
TrustManager[] trustAllCerts = ...

// Built-in trust manager
TrustManager[] trustManagers = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()).getTrustManagers();
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Saya Mendapat Makluman Jabat Tangan SSL 'unrecognized_name' Selepas Menaik taraf kepada Java 1.7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan