强制Java RMI服务器/客户端的SSL / TLS版本

时间:2014-11-06 19:44:08

标签: ssl java

无处不在,它说Java RMI可以应用SSL / TLS。我有一个客户端/服务器应用程序的工作示例,它正是这样做的。但是我如何强制使用的协议到TLS 1.2?我需要确保永远不会使用任何SSL版本或TLS 1.0。

1 个答案:

答案 0 :(得分: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。