いくつかの背景のために、私はthis guideに従っています。私はいくつかのgrpcマイクロサービスをauthで構築しています。grpc java authの例に必要な.pemファイル(s?)を正しく生成するにはどうすればよいですか?
私は非常に基本的なJavaの例を取得しようとしていますが、私が生成しているキーではSSL接続が行われません。
ここは私のサーバーコードです。ここで
server = NettyServer.forPort(8050)
.useTransportSecurity(
new File(serverCert)
new File(serverKey)
)
.addService(
new TestService(); // my implementation of the grpc service
)
.build();
server.start();
私のクライアントコードは、今
channel = NettyChannelBuilder.forAddress("localhost", 8050)
.sslContext(
GrpcSslContexts
.forClient()
.trustManager(
new File(serverCert)
).build()
).build();
、私は自分自身についていくつかの情報を入力した後、キー
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
を生成するために行くとき、私は2つのファイル
で終わるです>> ls
key.pem cert.pem
in my code上記のserverkeyは "key.pem"を参照し、serverCertは "cert.pem"を参照します
問題なくサーバーを起動できます。私はクライアントに接続しようとすると、私は次のエラー
INFO: [[email protected]] Created with target localhost:8050
Nov 03, 2016 11:25:16 AM getapi.example.TestClient greet
INFO: Will try to greet world ...
Nov 03, 2016 11:25:17 AM getapi.example.TestClient greet
WARNING: RPC failed: Status{code=UNAVAILABLE, description=null, cause=javax.net.ssl.SSLHandshakeException: General OpenSslEngine problem}
Nov 03, 2016 11:25:17 AM io.grpc.internal.ManagedChannelImpl maybeTerminateChannel
INFO: [[email protected]] Terminated
を取得し、最も関連性の高いラインは、この
javax.net.ssl.SSLHandshakeException: General OpenSslEngine problem
のようだ私は、私は基本的にキー/本命については考えていることを認めます/ pemファイルは、公開鍵暗号の基本的な理解を超えています。
誰かが、grpcが期待しているキーファイルを適切に生成する方法を説明してもらえますか?
私は答えがあります。私はとても近くにいた。キーを作成しているときに、 "localhost"ではなく、共通名にIPを使用しました。明日は私が能力があるときに正しく答えます。 – Zack
SSL設定で何かが壊れています(あなた自身の設定ではありません)。たとえば、異なるバージョンのtcnativeを使用する必要があります。そのステータスの「原因」にはおそらくより多くの情報があります。 'status.getCause()。printStackTrace()'を失敗した状態で実行し、出力をポストできますか? –