質問:
SSLサーバーソケット。考えられるすべての暗号スイートとプロトコルを有効にしているにもかかわらず、「共通の暗号スイートがありません」という SSLHandshakeException を受け取ります。
答え:
問題は、 SSLコンテキスト。 null KeyManager 配列を指定すると、RSA または DSA 証明書のない空の KeyManager が作成されます。これにより、これらの証明書に依存するデフォルトの暗号スイートの使用が許可されなくなり、最終的にエラーが発生します。これを修正するには:
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());
以上がSSLServerSocket の使用時に「SSLHandshakeException: 共通の暗号スイートがありません」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。