如何在Netty客户端启用会话恢复

时间:2017-11-09 20:59:55

标签: ssl netty

阅读有关SSL握手成本的an article,我看到了会话票证和会话恢复的可能性,以避免支付重新建立会话的费用。

在我的架构中,我在客户端使用Netty,在服务器端使用Tomcat。谷歌搜索我看到几个指南在nginx和其他服务器实现上启用它,但对于客户端的netty实现,我找不到任何东西。

此时,我想知道它是否是由SSLEngine在客户端为我直接管理的,我不得不做任何事,或者有一些“秘密”配置我必须打开才能从SSL恢复中受益在客户端。

我有什么理由要禁用它吗? (我在SO上看到了几个问题)

1 个答案:

答案 0 :(得分:0)

不幸的是,Java的SSL实现不支持会话门票,我提出了几年的功能请求。 https://bugs.openjdk.java.net/browse/JDK-8134497

幸运的是,Netty允许您切换到支持会话票据的OpenSSL实现,更好的是可以直接交换到您的代码中。

有关详细信息,请参阅http://netty.io/wiki/forked-tomcat-native.html,但您基本上只需添加:

<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-tcnative-boringssl-static</artifactId>
  <version>2.0.0.Final</version>
</dependency>

到您的POM文件,并在设置上下文时指定OpenSSL作为您的提供者。

  SslContext sslContext =
  SslContextBuilder.forClient()
                 .sslProvider(SslProvider.OPENSSL)
                 .build();

需要在系统上安装Apache Portable Runtime和OpenSSL。