首页 > Java > java教程 > 正文

使用 SSLServerSocket 时,为什么我会收到'SSLHandshakeException:没有共同的密码套件”?

DDD
发布: 2024-11-03 17:14:30
原创
293 人浏览过

Why am I receiving an

Java SSLHandshakeException“没有共同的密码套件”

问题:

我无法使用SSL 服务器套接字。尽管启用了所有可能的密码套件和协议,我还是收到了 SSLHandshakeException,指出“没有共同的密码套件。”

答案:

问题在于初始化SSLContext。提供空 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. 更新 SSLContext 初始化以使用 KeyManager:
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(kmf.getKeyManagers(), null, new SecureRandom());
登录后复制

以上是使用 SSLServerSocket 时,为什么我会收到'SSLHandshakeException:没有共同的密码套件”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板