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:
KeyStore ks = KeyStore.getInstance("JKS"); InputStream ksIs = new FileInputStream("..."); ks.load(ksIs, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(ks, "keypassword".toCharArray());
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!