【发布时间】:2017-07-06 07:39:52
【问题描述】:
虽然我阅读了 JSSE 参考指南,但我对加密和 SSL/TLS 协议都不是很熟悉。我正在开发一个需要某种 TCP 连接安全性的项目,因此我选择了 TLS 作为最常用的协议。
我在 JSSE 参考指南中找到了 SSLSocket 和 SSLServerSocket 的代码,并将其复制到我的项目中,但该操作的结果并不是真正预期的。当我启动我的服务器(Java 应用程序)时,一切似乎都在我试图与客户端(也是 Java 应用程序)连接的地步。此时,发生了 SSLHandshakeException:No cipher suite in common.
我的问题是,密码套件通常是什么(我用谷歌搜索了它,但我不太明白,初学者的基本解释是我需要的)以及我必须如何修复下面给出的代码让我的项目完美运行?
SSLSocket:
import java.io.*;
import javax.net.ssl.*;
. . .
int port = availablePortNumber;
String host = "hostname";
try {
SSLSocketFactory sslFact =
(SSLSocketFactory)SSLSocketFactory.getDefault();
SSLSocket s = (SSLSocket)sslFact.createSocket(host, port);
OutputStream out = s.getOutputStream();
InputStream in = s.getInputStream();
// Send messages to the server through
// the OutputStream
// Receive messages from the server
// through the InputStream
}
catch (IOException e) {
}
SSLServerSocket:
import java.io.*;
import javax.net.ssl.*;
. . .
int port = availablePortNumber;
SSLServerSocket s;
try {
SSLServerSocketFactory sslSrvFact =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
s = (SSLServerSocket)sslSrvFact.createServerSocket(port);
SSLSocket c = (SSLSocket)s.accept();
OutputStream out = c.getOutputStream();
InputStream in = c.getInputStream();
// Send messages to the client through
// the OutputStream
// Receive messages from the client
// through the InputStream
}
catch (IOException e) {
}
【问题讨论】: