Rumah >Java >javaTutorial >Mengapa Klien Java Saya Tidak Menghantar Sijilnya Semasa Jabat Tangan SSL?

Mengapa Klien Java Saya Tidak Menghantar Sijilnya Semasa Jabat Tangan SSL?

Patricia Arquette
Patricia Arquetteasal
2024-12-02 07:34:10602semak imbas

Why Doesn't My Java Client Send Its Certificate During SSL Handshake?

Mengapa Pelanggan Java Saya Tidak Dapat Menghantar Sijilnya Semasa Jabat Tangan SSL?

Dalam percubaan untuk menyambung ke perkhidmatan web selamat menggunakan Java , pengguna sering mengalami kegagalan jabat tangan. Walaupun mengkonfigurasi keystore dan truststore dengan betul, isu asas sering berpunca daripada keengganan Java untuk menghantar sijil pelanggan semasa berjabat tangan.

Memahami Masalah:

  1. Pelayan mengharapkan sijil pelanggan yang ditandatangani oleh RootCA yang dipercayai.
  2. Carian Java dalam keystore dan hanya menemui sijil pelanggan yang ditandatangani oleh SubCA, yang dipercayai oleh RootCA.
  3. Java tidak melihat di luar stor kunci, mengecualikan truststore daripada cariannya.
  4. Akibatnya, Java mendakwa ia tidak mempunyai sijil yang sesuai dan gagal berjabat tangan.

Dicadangkan Penyelesaian:

1. Alamat Rantaian Sijil Patah:

Sahkan bahawa sijil SubCA telah diimport ke stor kunci dengan betul, tanpa memutuskan rantaian sijil. Ini boleh dilakukan menggunakan keytool -v -list -keystore store.jks. Jika hanya satu sijil kelihatan bagi setiap entri alias, rantai itu berkemungkinan terputus.

Import Rantaian Sijil ke dalam Keystore:

Untuk menyelesaikan isu, import sijil pelanggan dan keseluruhan rantaian sijilnya bersama-sama ke dalam alias stor kunci yang mengandungi kunci peribadi.

2. Isu Konfigurasi di Bahagian Pelayan:

Walaupun permintaan pelayan untuk sijil yang ditandatangani SubCA adalah munasabah, pematuhan ketat Java terhadap permintaan itu mungkin tidak perlu mengehadkan. Penyemak imbas seperti Chrome dan OpenSSL dilihat lebih fleksibel dalam hal ini.

Penyelesaian:

Untuk memintas isu ini, pendekatan alternatif boleh digunakan:

  1. Eksport sijil klien dari stor kunci menggunakan keytool -exportcert -rfc -file clientcert.pem -kedai kedai kunci.jks -alias myalias. Ini menghasilkan fail PEM.
  2. Gabungkan sijil pelanggan dan sijil CA perantaraan (dan sijil CA akar sebagai pilihan) ke dalam satu fail bundle.pem.
  3. Import bundle sijil kembali ke stor kunci alias yang mengandungi kunci peribadi menggunakan keytool -importcert -keystore store.jks -alias myalias -file bundle.pem.

Atas ialah kandungan terperinci Mengapa Klien Java Saya Tidak Menghantar Sijilnya Semasa Jabat Tangan SSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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