2016-11-03 7 views
1

몇 가지 배경으로, 나는 다음과 같이 this guide을 인증 할 때 grpc 마이크로 서비스를 구축하고 있습니다.grpc java auth 예제에 필요한 .pem 파일 (s?)을 올바르게 생성하려면 어떻게해야합니까?

나는 아주 기본적인 자바 예제를 얻으려고하고 있는데, 내가 생성하고있는 키가 SSL 연결을 허용하지 않는다.

여기 내 서버 코드입니다. 나 자신에 대한 몇 가지 정보를 입력 한 후 키

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem 

를 생성하기 위해 갈 때 여기

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

, 나는 2 개 파일

와 끝까지
>> ls 
key.pem cert.pem 

내 코드 위에서 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"를 사용하는 것이 었습니다. 나는 아주 가까웠다. 키를 만들 때 "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 주소를 넣었습니다. 이것은 정확하지 않았습니다. 나는 모두를 위해 말할 수없는

사례를 사용하지만, 여기에서 할 수있는 적절한 것은 내가 대신 작동 대답을