ホームページ >Java >&#&チュートリアル >SSLServerSocket の使用時に「SSLHandshakeException: 共通の暗号スイートがありません」が発生するのはなぜですか?

SSLServerSocket の使用時に「SSLHandshakeException: 共通の暗号スイートがありません」が発生するのはなぜですか?

DDD
DDDオリジナル
2024-11-03 17:14:30339ブラウズ

Why am I receiving an

Java SSLHandshakeException "共通の暗号スイートがありません"

質問:

SSLサーバーソケット。考えられるすべての暗号スイートとプロトコルを有効にしているにもかかわらず、「共通の暗号スイートがありません」という SSLHandshakeException を受け取ります。

答え:

問題は、 SSLコンテキスト。 null KeyManager 配列を指定すると、RSA または DSA 証明書のない空の KeyManager が作成されます。これにより、これらの証明書に依存するデフォルトの暗号スイートの使用が許可されなくなり、最終的にエラーが発生します。これを修正するには:

  1. 証明書を含むキーストアをロードします:
KeyStore ks = KeyStore.getInstance("JKS");
InputStream ksIs = new FileInputStream("...");
ks.load(ksIs, "password".toCharArray());
  1. キーストアを使用して KeyManagerFactory を初期化します:
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "keypassword".toCharArray());
  1. KeyManager を使用するように SSLContext の初期化を更新します:
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(kmf.getKeyManagers(), null, new SecureRandom());

以上がSSLServerSocket の使用時に「SSLHandshakeException: 共通の暗号スイートがありません」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。