grpc/grpc-java

Support SslMasterKeyHandler in NettyServerBuilder

Open

#7,199 opened on Jul 10, 2020

View on GitHub
 (15 comments) (1 reaction) (0 assignees)Java (3,742 forks)batch import
enhancementgood first issue

Repository metrics

Stars
 (11,124 stars)
PR merge metrics
 (Avg merge 23d 22h) (43 merged PRs in 30d)

Description

I have a problem with adding SslMasterKeyHandler#newWireSharkSslMasterKeyHandler on the server side. I tried to do this with channelFactory:

builder.channelFactory(() -> {
          final ServerChannel ch = GrpcUtil.getDefaultServerChannelFactory().newChannel();
          final ChannelPipeline pipeline = ch.pipeline();
          pipeline.addLast(SslMasterKeyHandler.newWireSharkSslMasterKeyHandler());
          return ch;
        })

and later with ProtocolNegotiator:

final SslContext sslContext = GrpcSslContexts.configure(sslClientContextBuilder).build();
final io.grpc.netty.ProtocolNegotiator negotiator = ProtocolNegotiators.serverTls(sslContext);
builder.protocolNegotiator(tlsNegotiator(negotiator);

In the first case, the setting had no effect. In the second case, the server worked incorrectly (it stopped accepting connections, even without a handler, just with a negotiator wrapper).

What should be the proper implementation?

Contributor guide