首頁 >Java >java教程 >使用 SSLServerSocket 時,為什麼我會收到「SSLHandshakeException:沒有共同的密碼套件」?

使用 SSLServerSocket 時,為什麼我會收到「SSLHandshakeException:沒有共同的密碼套件」?

DDD
DDD原創
2024-11-03 17:14:30371瀏覽

Why am I receiving an

Java SSLHandshakeException「沒有共同的密碼套件」

問題:

我無法使用SSL 伺服器套接字。儘管啟用了所有可能的密碼套件和協議,我還是收到了SSLHandshakeException,指出「沒有共同的密碼套件和協議,我還是收到了SSLHandshakeException,指出「沒有共同的密碼套件。」

答案:

問題在於。提供空 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());
使用金鑰庫初始化KeyManagerFactory:
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(kmf.getKeyManagers(), null, new SecureRandom());
更新SSLContext 初始化以使用KeyManager:

以上是使用 SSLServerSocket 時,為什麼我會收到「SSLHandshakeException:沒有共同的密碼套件」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn