2017-12-04 7 views
0

新しいトピックです。私は平文として接続することができます。gRPC:クライアントでSSLを設定するには?

public ManagedChannel getChannel(String serviceName){ 
    TSServiceClientManager scm = TSServiceManagementFactory.getInstance().getServiceClientManager(); 
    TSServiceConnectionInfo connInfo = scm.getServiceConnectionInfo(serviceName); 
    if(channel == null){ 
     channel = ManagedChannelBuilder.forAddress(connInfo.getHost(), connInfo.getPort()) 
       .usePlaintext(true) //need help here for SSL code 
       .build(); 
    } 

    return channel; 
} 

クライアント側のSSLを有効にするように指示されました。 私は助けが必要です:

上記のコードに示すようにSSLを有効にするにはどうすればよいですか?私が知りたい

(親切に証明書ファイル、鍵ストア、トラストストアとの.pemファイルが存在して検討し、コードを書き換える)

そして

は、SSL接続を機能させるために、サーバーを行うには何があります?

答えて

3

トランスポート固有のAPIを使用する必要があります。今日はNettyを使用している可能性が高いです。 Nettyの場合、NettyのSslContextを設定してgRPCに渡す必要があります。

SslContext sslcontext = GrpcSslContexts.forClient() 
    // if server's cert doesn't chain to a standard root 
    .trustManager(caFile) 
    .keyManager(clientCertFile, keyFile) // client cert 
    .build(); 
channel = NettyChannelBuilder.forAddress(serverHost, serverPort) 
    .sslContext(sslContext) 
    .build(); 

あなたはサーバー側の設定が必要な場合、それは同様のNettyServerBuilder.sslContext()を使用します。あなたの使用法は、このようなものに見えるかもしれません。しかし、文脈自体は異なっているでしょう。

+0

返信ありがとう@エリックアンダーソン、私は明日試してみます。ほとんど私の疑問を解決しました。一度それを得たら、私はそれを答えとしてマークし、私が行った変更を共有します。 –

関連する問題