ホームページ > Java > &#&チュートリアル > SSL ハンドシェイク中に「DH キーペアを生成できませんでした」というエラーが表示されるのはなぜですか?

SSL ハンドシェイク中に「DH キーペアを生成できませんでした」というエラーが表示されるのはなぜですか?

Susan Sarandon
リリース: 2024-12-06 21:07:14
オリジナル
726 人が閲覧しました

Why Am I Getting a

エラー: SSL ハンドシェイク中に「DH キーペアを生成できませんでした」

問題:

特定の IRC サーバーとの SSL 接続を確立すると、開発者は次のような問題に遭遇します。例外:

java.lang.RuntimeException: Could not generate DH keypair
...
java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)
ログイン後にコピー

回答:

この問題の根本原因は、Diffie-Hellman (DH) 鍵交換アルゴリズムで使用される「プライム サイズ」です。 Java のデフォルトの SSL 実装では、素数サイズが最大 1024 ビットに制限されています (JDK-6521495 を参照)。

回避策:

この問題を解決するには、Java 開発者は次のことを検討できます。代替ツールキットを使用するか、回避策を実装します。推奨される解決策は次のとおりです:

  1. 代替ツールキットを使用します: BouncyCastle の JCE 実装など、1024 ビットを超える素数サイズをサポートする別の SSL 実装を採用します。
  2. Java ソース コードの編集 (推奨されません): ソースを変更しますJava の DHKeyPairGenerator クラス (com.sun.crypto.provider にあります) のコードを使用して、プライム サイズの最大制限を増やします。

それ以降の Java バージョン:

注それ以降の Java バージョンでは、DH キー交換の最大プライム サイズ制限が引き上げられています。概要は次のとおりです:

  • Java 8 (JDK-7044060): 制限が 2048 ビットに増加。
  • Java 9 (JDK-8072452): 2048 を超える素数サイズの制限が削除bits.

を使用している場合古い Java バージョンの場合は、増加したプライム サイズ制限を利用するためにアップグレードすることをお勧めします。

以上がSSL ハンドシェイク中に「DH キーペアを生成できませんでした」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート