2017-05-18 133 views
0

我有GRPC服务器使用OpenSSL的运行 - 静态的方式,我试图用的NodeJS客户节点JS客户端GRPC服务器

我没有看到任何错误连接到服务器,但我看不到它的连接到服务器或者。 如果您有任何样品,请分享。下面

请参考代码:

var rootCertPath = path.join('.','.', 'server-root.PEM'); 
    var privateCertPath = path.join('.','.', 'server-private.PEM'); 
    var domainCertPath = path.join('.','.', 'server-domain.PEM'); 

    var rootCert = fs.readFileSync(rootCertPath); 
    var privateCert = fs.readFileSync(privateCertPath); 
    var domainCert = fs.readFileSync(domainCertPath); 

    var buf1 = new Buffer('rootCert'); 
    var buf2 = new Buffer('privateCert'); 
    var buf3 = new Buffer('domainCert'); 

    var chat_proto = grpc.load("Chat.proto").com.company.grpc; 
    var client = new chat_proto.ChatService('https://servervip:443',grpc.credentials.createSsl(buf1,buf2,buf3)); 

Chat.proto

syntax = "proto3"; 

     // Service definition. 

      service ChatService { 
       // Sends a chat 
       rpc chat(stream ChatMessage) returns (stream ChatMessageFromServer) {} 
      } 
     // The request message containing the user's name. 
     message ChatMessage { 
      string name = 1; 
      string message = 2; 
     } 

     // The response message containing the greetings 
     message ChatMessageFromServer { 
      string name = 1; 
      string message = 2; 
     } 

//代码,以请求

var username = process.argv[2]; 
var stdin = process.openStdin(); 

function main() { 
    console.log("starting"); 
    console.log(client); // prints { '$channel': Channel {} } 
    var chat=client.chat(); 
    chat.on('data', function(msg) { 
     console.log(msg.name + ': ' + msg.message); 
     console.log("after message"); 
    }); 

    stdin.addListener('data',function(input) { 
     chat.write({ name: username, message: input.toString().trim() 
     }); 

    }); 

} 
main(); 
+0

您能否包含您用于实际提出请求的代码?你是否看到任何具体的错误?除此之外,您不应该在客户端使用服务器的私钥和证书链数据。您只需要root证书,如果您想要执行基于TLS的客户端身份验证,则客户端应该拥有自己的ckey。 – murgatroid99

+0

添加在原岗位的建议的详细信息 - 请参阅下面的章节 //代码,以请求 //Chat.proto 我试过根证书唯一方法还是一样的行为 我没有任何要求现在来验证客户端 – Nitin

+0

>>创建客户端场景1:var client = new chat_proto.ChatService('https:// servervip:443',creds); 没有错误,但没有回应 >>创建客户端场景2时出错:var client = new chat_proto.ChatService('servervip',creds); E0519 11312 ssl_transport_security.c:601]无法加载任何根证书。 E0519 11312 ssl_transport_security.c:1315]无法加载服务器根证书。 E0519 11312 security_connector.c:837]握手工厂创建失败,TSI_INVALID_ARGUMENT。 E0519 11312 secure_channel_create.c:127]无法为安全名称'servervip'创建安全子通道 – Nitin

回答

0

那么好新的 - 下面的东西为我工作

var rootCertPath = path.join('.','.', 'roots.PEM'); 
var rootCert = fs.readFileSync(rootCertPath); 
var chat_proto = grpc.load("Chat.proto").com.americanexpress.grpc.chat; 
var client = new chat_proto.ChatService('servervip:443',grpc.credentials.createSsl(rootCert)); 

看起来像是一个证书问题 - 我在grpc客户端使用默认的roots.PEM,它对我很有帮助。将从内部查看我的servervip CA证书链的正确根目录。

非常感谢您的支持

相关问题