2017-11-09 6 views
0

an article에서 SSL 핸드 셰이크 비용을 읽음으로써 세션 재구성 비용을 피하기 위해세션 티켓과 세션 재개가 가능할 수 있음을 알았습니다.Netty 클라이언트 측에서 세션 재개를 활성화하는 방법

내 아키텍처에서는 Netty를 클라이언트 측에서 사용하고 Tomcat은 서버 측에서 사용합니다. 인터넷 검색 nginx 및 기타 서버 구현에 사용할 수있는 몇 가지 가이드를 보았지만 클라이언트 측에서 netty 구현을 위해 아무것도 찾을 수 없었습니다.

이 시점에서 클라이언트 측에서 직접 SSLEngine에서 관리했는지는 궁금 해서요. 아무 것도하지 않아도됩니다. 또는 SSL을 사용하도록 설정해야하는 "비밀 설정"이 있습니다. 클라이언트 측에서 재개.

사용을 중지하려는 이유가 있습니까? (나는 SO에 관한 몇 가지 질문을 보았습니다)

답변

0

불행히도 Java SSL 구현은 세션 티켓을 지원하지 않습니다. 몇 년 전에이 기능 요청을 제출했습니다. https://bugs.openjdk.java.net/browse/JDK-8134497

Luckily 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을 시스템에 설치해야합니다.

+0

실제로 정적 개체를 사용하는 경우 정적 연결이므로 apr 및 openssl을 설치할 필요가 없습니다. 그냥 작동 할 것입니다;) –

+0

이 티켓은 OpenJDK가 아닌 OracleJDK를 참조합니까? – rodi