如何通过TLS 1.2强制网络服务器进行通信?

时间:2017-03-07 14:19:31

标签: netty

My Netty应用程序在JDK1.8上作为TCP套接字服务器运行。 JDK 1.8支持TLS 1.0,TLS 1.1和TLS 1.2。

我们希望在服务器端通过TLSv1.2强制TCP服务器和客户端之间的通信(不需要使用较低的协议)。

以下是代码段:

{ 
KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(new FileInputStream("JKS location"), "password");
        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
         kmf.init(ks, "password".toCharArray());
        SslContext sslContext = SslContextBuilder.forServer(kmf).build();
        pipeline.addLast(sslContext.newHandler(socketChannel.alloc()));
}

我们如何强制netty服务器只能通过TLS1.2协议进行通信?

1 个答案:

答案 0 :(得分:2)

只需正确配置SSLEngine:

SslHandler handler = sslContext.newHandler(socketChannel.alloc());
handler.engine().setEnabledProtocols(new String[] {"TLSv1.2"});
...