ssl - 为 Java RMI 服务器/客户端强制使用 SSL/TLS 版本

标签 ssl java

到处都有记录,它说 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/

相关文章:

iOS 添加受信任的根证书 - 公共(public)还是私有(private)?

java - 将一段话拆分成句子,分隔符 : period, 分号和问号

java - 使用 Spark 2.3 结构化流的 Jar 依赖项错误

ssl - 您如何与证书颁发机构签署证书签名请求?

java - 带有证书的签名小程序偶尔会通过 HTTPS 被拒绝

node.js - MongoDB - SSL 连接问题

java - ArrayList.trimToSize() 方法

java - 使用 Jongo 使用 MongoDB 从 Person 集合中展开 $unwind 地址

java - 删除一行数据后无法刷新TableView

wordpress - 当强制使用 SSL 时,网站主页会丢失样式