Netty 4.1如何从服务器端重新启动SSL会话/握手(hello请求)

时间:2017-10-26 11:42:29

标签: java ssl https netty

我是Netty框架的新手,我不知道如何从服务器端发送OpenSSL'hello request'。

Netty SSlHandler:

  

重新开始会话

     

要重新启动SSL会话,您必须删除现有的已关闭   来自ChannelPipeline的SslHandler,插入一个新的SslHandler   新的SSLEngine进入管道,并启动握手过程   在第一部分中描述。

我有基于SnoopServer示例的HTTPS服务器,但是当我尝试重新启动ssl时,没有按预期工作。

e.g。

// reset ssl session from server's HttpHandler 
SslContext sslCtx = null;
SelfSignedCertificate selfSignedCert;
try {
    selfSignedCert = new SelfSignedCertificate();
    sslCtx = SslContextBuilder.forServer(selfSignedCert.certificate(), selfSignedCert.privateKey()).sslProvider(SslProvider.JDK).build();
    } catch (CertificateException | SSLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

((SslHandler) ctx.pipeline().get("ssl")).close(ctx, ctx.newPromise());

if (ctx.pipeline().remove("ssl") != null && sslCtx != null) {
   ctx.pipeline().addFirst("sslNew", sslCtx.newHandler(ctx.channel().alloc()));
}

我需要重启会话,因为这是重启握手的独特方式,如netty.io docs中所述。

然后我需要问:有没有办法从netty https snoop服务器请求客户端问候?

OpenSSL能够从服务器向客户端发送helloRequest并等待“Client Hello”但是如何?

1 个答案:

答案 0 :(得分:0)

你可以随时开始新的握手,你肯定需要一个新的SSLEngine

然而这

  • 至少通过建立新的会话密钥,或者可能更改密码套件或获取对等证书来更新当前会话,或
  • 如果您使旧会话无效,
  • 会创建一个新会话。

'重启'会议。没有这样的操作。