In meinem Projekt mit grpc und java verwende ich OpenSSL, um eine sichere Verbindung zwischen Client und Server herzustellen.Verbindung zum Grpc-Server vom Client über SSL nicht möglich
Ich bin in der Lage, den Grpc-Server erfolgreich zu bringen.
Die Dokumentation here dass für einen sicheren Kanal der Client-Code erwähnt dies
ManagedChannel channel = ManagedChannelBuilder.forAddress("myservice.example.com", 443)
.build();
GreeterGrpc.GreeterStub stub = GreeterGrpc.newStub(channel);
ist ich den Code auf Client verwenden wie folge aber die folgende Ausnahme ausgelöst wird.
mChannel = ManagedChannelBuilder.forAddress(GrpcConstants.LOCAL_GRPC_CLIENT_IP, GrpcConstants.LOCAL_GRPC_CLIENT_PORT).build();
mEmployerServicesBlockingStub = EmployerServicesGrpc.newBlockingStub(mChannel);
mInviteContactsBlockingStub = InviteContactsGrpc.newBlockingStub(mChannel);
Ausnahme:
Network channel closed
at io.grpc.Status.asRuntimeException(Status.java:431)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:157)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:106)
ich mit dem folgenden Code auch versucht:
mChannel = NettyChannelBuilder.forAddress(GrpcConstants.LOCAL_GRPC_CLIENT_IP, GrpcConstants.LOCAL_GRPC_CLIENT_PORT).sslContext(GrpcSslContexts.forClient().trustManager(file).build()).build();
mEmployerServicesBlockingStub = EmployerServicesGrpc.newBlockingStub(mChannel);
mInviteContactsBlockingStub = InviteContactsGrpc.newBlockingStub(mChannel);
Dies ist auch, wie oben die gleiche Ausnahme geben. Ich habe hier nur eine Nulldatei angegeben.
Bitte lassen Sie mich wissen, welcher Ansatz für ein GoDaddy-Zertifikat verwendet werden soll.
Wenn es der erste Ansatz ist, was fehlt mir.
Wenn es der zweite Ansatz ist, welche Datei soll ich für "roots.pem" verwenden.
Aktualisiert.
Danke für die Antwort. Ich war in der Lage, eine erfolgreiche Verbindung mit dem Code, der für SSL auf GPC-Dokumentation gegeben wurde, eine Client-Seite .crt-Datei auf dem Client-Code und den privaten Schlüssel und die Server-.crt-Datei auf der Serverseite. –
Immer noch gab es ein anderes Problem. Der Client gab weder eine Ausnahme noch erreichte er den Server. Irgendwie war derselbe Code für SSL durch das Beispielprojekt grep-java github erfolgreich. Der einzige Unterschied, den ich von meinem Projekt zur Beispielimplementierung von grpc-java sehen konnte, ist die Version von osdetector. Ich konnte osdetector 1.4.0 aufgrund dieses Problems nicht hinzufügen (http://stackoverflow.com/questions/37160085/gradle-not-able-to-detect-osdetector-plugin). Während grpc-java 1.4.0 hatte und erfolgreich mit skipcodegen = true param während des Builds gebaut wurde. –
@DivijeNarasimhachar, ich erwarte nicht, dass die osdetector-Version das Problem ist. Die einzige Idee, die ich habe, ist, dass Sie einen falschen SslContext verwenden: 'GrpcSslContexts.forClient()' auf der Serverseite oder 'GrpcSslContexts.forServer()' auf der Client-Seite. Das ist wirklich schwer als Tippfehler zu bemerken, und ich habe gehört, dass Ursachen hängen. –