阅读有关SSL握手成本的an article,我看到了会话票证和会话恢复的可能性,以避免支付重新建立会话的费用。
在我的架构中,我在客户端使用Netty,在服务器端使用Tomcat。谷歌搜索我看到几个指南在nginx和其他服务器实现上启用它,但对于客户端的netty实现,我找不到任何东西。
此时,我想知道它是否是由SSLEngine在客户端为我直接管理的,我不得不做任何事,或者有一些“秘密”配置我必须打开才能从SSL恢复中受益在客户端。
我有什么理由要禁用它吗? (我在SO上看到了几个问题)
答案 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。