2017-12-04 3 views
0

Ihr neues Thema für mich. Ich kann mich als Klartext verbinden.gRPC: Wie konfiguriert man SSL im Client?

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; 
} 

Ich wurde aufgefordert, clientseitige SSL zu aktivieren. Ich weiß, wie zu generieren, Schlüsselspeicher, Trusts, pem, CA usw. Ich brauche Hilfe in:

Wie SSL statt .usePlaintext (true) zu ermöglichen, wie in der oben gezeigten Code?

(bitte den Code neu schreiben die cert-Datei, Schlüsselspeicher, und Trusts .pem-Datei existieren in Anbetracht)

Und

Ich will nichts wissen wird mit dem Server zu tun SSL-Verbindung Arbeit zu machen ?

Antwort

3

Sie müssen eine transportspezifische API verwenden. Sie verwenden wahrscheinlich heute Netty. Für Netty müssen Sie Nettys SslContext konfigurieren und an gRPC übergeben. Ihre Nutzung kann wie folgt aussehen:

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(); 

Wenn Sie serverseitige Konfiguration benötigen, würde es die ähnliche NettyServerBuilder.sslContext() verwenden. Aber der Kontext selbst wäre anders.

+0

Danke für die Antwort @Eric Anderson, ich werde es morgen versuchen. Fast meine Zweifel ausgeräumt. Sobald ich es bekommen habe, werde ich es als Antwort markieren und ich werde teilen, was ich verändert habe. –

Verwandte Themen