首頁 > Java > java教程 > 主體

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

DDD
發布: 2024-11-03 17:14:30
原創
294 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板