Rumah >Java >javaTutorial >Mengapa saya menerima \'SSLHandshakeException: tiada suite sifir yang sama\' apabila menggunakan SSLServerSocket?

Mengapa saya menerima \'SSLHandshakeException: tiada suite sifir yang sama\' apabila menggunakan SSLServerSocket?

DDD
DDDasal
2024-11-03 17:14:30371semak imbas

Why am I receiving an

Java SSLHandshakeException "tiada suite sifir yang sama"

Soalan:

Saya tidak dapat mewujudkan sambungan SSL menggunakan SSLServerSocket. Walaupun mendayakan semua suite dan protokol sifir yang mungkin, saya menerima SSLHandshakeException yang menyatakan "tiada suite sifir yang sama."

Jawapan:

Isunya terletak pada permulaan SSLContext. Menyediakan tatasusunan KeyManager nol menghasilkan KeyManager kosong yang tidak mempunyai sijil RSA atau DSA. Ini tidak membenarkan penggunaan suite sifir lalai yang bergantung pada sijil ini dan akhirnya membawa kepada ralat. Untuk membetulkannya:

  1. Muatkan stor kunci yang mengandungi sijil anda:
KeyStore ks = KeyStore.getInstance("JKS");
InputStream ksIs = new FileInputStream("...");
ks.load(ksIs, "password".toCharArray());
  1. Mulakan KeyManagerFactory dengan stor kunci:
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "keypassword".toCharArray());
  1. Kemas kini permulaan SSLContext untuk menggunakan KeyManagers:
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(kmf.getKeyManagers(), null, new SecureRandom());

Atas ialah kandungan terperinci Mengapa saya menerima \'SSLHandshakeException: tiada suite sifir yang sama\' apabila menggunakan SSLServerSocket?. 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