gRPC - Example SSL Client and Server Configuration
Server
import io.grpc.Server; import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.NettyServerBuilder; import io.netty.handler.ssl.SslContext; import nl.altindag.ssl.SSLFactory; import nl.altindag.ssl.util.NettySslUtils; import java.io.IOException; public class App { public static void main(String[] args) throws IOException { SSLFactory sslFactory = SSLFactory.builder() .withIdentityMaterial("identity.jks", "secret".toCharArray()) .withTrustMaterial("truststore.jks", "secret".toCharArray()) .withNeedClientAuthentication() .build(); SslContext sslContext = GrpcSslContexts.configure(NettySslUtils.forServer(sslFactory)).build(); Server server = NettyServerBuilder.forPort(8443) .sslContext(sslContext) .build() .start(); } }
Client
import io.grpc.ManagedChannel; import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.NettyChannelBuilder; import io.netty.handler.ssl.SslContext; import nl.altindag.ssl.SSLFactory; import nl.altindag.ssl.util.NettySslUtils; import java.io.IOException; public class App { public static void main(String[] args) throws IOException { SSLFactory sslFactory = SSLFactory.builder() .withIdentityMaterial("identity.jks", "secret".toCharArray()) .withTrustMaterial("truststore.jks", "secret".toCharArray()) .withDefaultTrustMaterial() .build(); SslContext sslContext = GrpcSslContexts.configure(NettySslUtils.forClient(sslFactory)).build(); ManagedChannel channel = NettyChannelBuilder.forAddress("localhost", 8443) .sslContext(sslContext) .build(); } }