@Override
    // Keep this in sync with ShadedNettyChannelFactory#configureSecurity
    protected void configureSecurity(final NettyChannelBuilder builder, final String name) {
        final GrpcChannelProperties properties = getPropertiesFor(name);

        final NegotiationType negotiationType = properties.getNegotiationType();
        builder.negotiationType(of(negotiationType));

        if (negotiationType == NegotiationType.TLS) {
            final Security security = properties.getSecurity();

            final String authorityOverwrite = security.getAuthorityOverride();
            if (authorityOverwrite != null && !authorityOverwrite.isEmpty()) {
                builder.overrideAuthority(authorityOverwrite);
            }

            final SslContextBuilder sslContextBuilder = GrpcSslContexts.forClient();
            configureProvidedClientCertificate(security, sslContextBuilder);
            configureAcceptedServerCertificates(security, sslContextBuilder);

            if (security.getCiphers() != null && !security.getCiphers().isEmpty()) {
                sslContextBuilder.ciphers(security.getCiphers());
            }

            if (security.getProtocols() != null && security.getProtocols().length > 0) {
                sslContextBuilder.protocols(security.getProtocols());
            }

            try {
                builder.sslContext(sslContextBuilder.build());
            } catch (final SSLException e) {
                throw new IllegalStateException("Failed to create ssl context for grpc client", e);
            }
        }
    }
Creates a new GrpcChannelFactory for netty with the given options.

@param properties The properties for the channels to create.
@param globalClientInterceptorRegistry The interceptor registry to use.
@param channelConfigurers The channel configurers to use. Can be empty.
grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/channelfactory/NettyChannelFactory.java