2016-11-03 5 views
1

いくつかの背景のために、私は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が期待しているキーファイルを適切に生成する方法を説明してもらえますか?

+0

私は答えがあります。私はとても近くにいた。キーを作成しているときに、 "localhost"ではなく、共通名にIPを使用しました。明日は私が能力があるときに正しく答えます。 – Zack

+0

SSL設定で何かが壊れています(あなた自身の設定ではありません)。たとえば、異なるバージョンのtcnativeを使用する必要があります。そのステータスの「原因」にはおそらくより多くの情報があります。 'status.getCause()。printStackTrace()'を失敗した状態で実行し、出力をポストできますか? –

答えて

1

私は自分のキーを間違って作成していました。ここにopensslコマンドがあります。

openssl req -x509 -days 365 -nodes -newkey rsa:1024 -keyout key.pem -out cert.pem 

私は元々自分のIPアドレスを入れました。これは正しくありませんでした。

すべてのユースケースについて話すことはできませんが、代わりに "localhost"を使用するのが適切です。

関連する問題