到处都有记录,它说 Java RMI 可以应用 SSL/TLS。我有一个客户端/服务器应用程序的工作示例,它正是这样做的。但是我怎样才能将使用的协议(protocol)强制为 TLS 1.2?我需要确保从未使用任何 SSL 版本或 TLS 1.0。
最佳答案
我找到了答案,最后我自己写了一个 RMIServerSocketFactory 的实现:
public class TlsServerSocketFactory implements RMIServerSocketFactory {
public ServerSocket createServerSocket(int port) throws IOException
{
SSLServerSocketFactory sf = ((SSLServerSocketFactory) SSLServerSocketFactory.getDefault());
SSLServerSocket s = (SSLServerSocket) (sf.createServerSocket(port));
s.setUseClientMode(false);
s.setEnabledProtocols(new String[]{"TLSv1.1", "TLSv1.2"}); // NO POODLES HERE!
s.setEnabledCipherSuites(s.getSupportedCipherSuites());
return s;
}
}
对于 ClientFactory,这几乎是相同的过程,但这不是我的需要所必需的。 哦,我必须得到 JDK 1.8,因为 TLS1 是 1.6 的最大值。
关于ssl - 为 Java RMI 服务器/客户端强制使用 SSL/TLS 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806018/