问题:
我无法使用SSL 服务器套接字。尽管启用了所有可能的密码套件和协议,我还是收到了 SSLHandshakeException,指出“没有共同的密码套件。”
答案:
问题在于初始化SSLContext。提供空 KeyManager 数组会导致缺少 RSA 或 DSA 证书的空 KeyManager。这不允许使用依赖这些证书的默认密码套件,并最终导致错误。要解决此问题:
KeyStore ks = KeyStore.getInstance("JKS"); InputStream ksIs = new FileInputStream("..."); ks.load(ksIs, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(ks, "keypassword".toCharArray());
SSLContext sc = SSLContext.getInstance("TLSv1.2"); sc.init(kmf.getKeyManagers(), null, new SecureRandom());
以上是使用 SSLServerSocket 时,为什么我会收到“SSLHandshakeException:没有共同的密码套件”?的详细内容。更多信息请关注PHP中文网其他相关文章!