Rumah >Java >javaTutorial >Mengapa Jabat Tangan SSL Java Saya Gagal Apabila Pelayan Meminta Sijil Pelanggan yang Ditandatangani oleh CA Berbeza?

Mengapa Jabat Tangan SSL Java Saya Gagal Apabila Pelayan Meminta Sijil Pelanggan yang Ditandatangani oleh CA Berbeza?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 05:36:13577semak imbas

Why Does My Java SSL Handshake Fail When the Server Requests a Client Certificate Signed by a Different CA?

Pengguguran Sijil Pelanggan dalam Java SSL Handshake

Gelagat Java semasa jabat tangan SSL kadangkala boleh mengakibatkan kehilangan sijil pelanggan, yang membawa kepada jabat tangan kegagalan. Isu ini timbul apabila pelayan meminta sijil klien yang ditandatangani oleh CA tertentu (dalam kes ini, "RootCA"), dan Java hanya menemui sijil klien yang ditandatangani oleh CA bawahan ("SubCA") dalam Keystore.

Pertimbangan Konfigurasi Kedai Kunci:

  1. Rantai Sijil Pecah: Ada kemungkinan bahawa pengimportan sijil "SubCA" ke dalam Keystore mungkin telah mengganggu rantaian sijil, menyebabkan KeyManager mengenali sijil pelanggan sahaja.
  2. Persatuan Sijil: The Sijil "SubCA" harus dikaitkan dengan alias yang mengandungi sijil klien dan kunci peribadinya dalam Keystore. Perkaitan ini boleh disahkan menggunakan keytool -v -list -keystore store.jks.

Pertimbangan Konfigurasi Pelayan:

  1. Pihak Berkuasa Sijil Percanggahan: Sebaik-baiknya, pelayan harus meminta sijil pelanggan yang ditandatangani oleh "SubCA", kerana itu adalah kuasa yang dipercayai yang diberikan kepada pelanggan. Walau bagaimanapun, pematuhan ketat Java terhadap pengesahan rantai sijil boleh menyebabkan kegagalan jabat tangan dalam senario ini.

Penyelesaian Penyelesaian:

Untuk membetulkan isu ini, sijil pelanggan dan rantaian sijilnya (termasuk sijil "SubCA") hendaklah digabungkan menjadi satu fail (cth., bundle.pem). Fail PEM yang digabungkan ini kemudiannya boleh diimport ke alias Keystore yang memegang kunci peribadi pelanggan menggunakan keytool -importcert -keystore store.jks -alias myalias -file bundle.pem. Dengan melakukan ini, Java akan mengenali rantai sijil lengkap dan menghantar sijil yang sesuai semasa jabat tangan SSL.

Atas ialah kandungan terperinci Mengapa Jabat Tangan SSL Java Saya Gagal Apabila Pelayan Meminta Sijil Pelanggan yang Ditandatangani oleh CA Berbeza?. 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