Ich habe GRPC Server mit OpenSSL laufe - statisch und ich versuche zu Server mit NodeJS ClientKnoten js-Client für grpc Server
Ich sehe keinen Fehler zu verbinden, aber ich sehe nicht, seine Verbindung zum Server entweder . Bitte teilen Sie, wenn Sie irgendeine Probe haben.
Bitte beachten Sie folgenden Code:
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;
}
// Code eine Anfrage
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();
Können Sie den Code, den Sie verwenden, um die Anfrage tatsächlich zu machen? Sehen Sie bestimmte Fehler? Darüber hinaus sollten Sie die Daten des privaten Schlüssels und der Zertifikatskette des Servers nicht auf der Clientseite verwenden. Sie benötigen nur Root-Zertifikate, und wenn Sie eine TLS-basierte Client-Authentifizierung durchführen möchten, sollte der Client eigene Tasten haben. – murgatroid99
hinzugefügt Details in der ursprünglichen Nachricht, wie vorgeschlagen - siehe unten Abschnitte //-Code eine Anfrage //Chat.proto Ich versuchte cert nur Ansatz mit der Wurzel zu machen und immer noch das gleiche Verhalten Ich habe keine Voraussetzung für jetzt zur Authentifizierung des Clients – Nitin
>> Erstellen des Client-Szenarios 1: var client = new chat_proto.ChatService ('https: // servervip: 443', creds); Kein Fehler, aber keine Antwort >> Fehler beim Erstellen des Client-Szenarios 2: var client = new chat_proto.ChatService ('servervip', creds); E0519 11312 ssl_transport_security.c: 601] Konnte kein Wurzelzertifikat laden. E0519 11312 ssl_transport_security.c: 1315] Server-Root-Zertifikate können nicht geladen werden. E0519 11312 security_connector.c: 837] Die Erstellung des Handshaker-Werks ist mit TSI_INVALID_ARGUMENT fehlgeschlagen. E0519 11312 secure_channel_create.c: 127] Fehler beim Erstellen des sicheren Unterkanals für den sicheren Namen 'servervip' – Nitin