#grpc 节点客户端允许签名证书
#grpc node client allow signed certificate
我在服务器上有一个自签名的 grpc 服务,并让它在带有 dart 客户端的 dart 服务器上工作。
但我不知道如何绕过或允许节点客户端的自签名证书..
我试过这个:
const sslCreds = await grpc.credentials.createSsl(
fs.readFileSync('./ssl/client.crt'),
null, // privatekey
null, // certChain
{
checkServerIdentity: function(host, info) {
console.log('verify?', host, info);
if (
host.startsWith('127.0.0.1') ||
host.startsWith('logs.example.com')
) {
return true;
}
console.log('verify other?', host);
return true;
},
},
);
// sslCreds.options.checkServerIdentity = checkCert;
const gLogClient = new synagieLogGrpc.LoggerClient(
'host:port',
sslCreds,
);
但是当我调用时,我的验证 checkServerIdentity 没有调用。
有人知道吗?
检查多个 github 问题并测试 2 天后,
下面的代码有效。
关键是,实际 host:port 是目的地,可能是本地主机。但我们需要用实际生成的 ssl 域覆盖 ssl 目标名称。
tls 生成示例:
https://github.com/grpc/grpc-node/issues/1451
const host = 'localhost';
const port = 8088;;
const hostPort = `${host}:${port}`;
const gLogClient = new synagieLogGrpc.LoggerClient(hostPort, sslCreds, {
'grpc.ssl_target_name_override': 'actual_tlsdomain.example.com',
});
我在服务器上有一个自签名的 grpc 服务,并让它在带有 dart 客户端的 dart 服务器上工作。 但我不知道如何绕过或允许节点客户端的自签名证书.. 我试过这个:
const sslCreds = await grpc.credentials.createSsl(
fs.readFileSync('./ssl/client.crt'),
null, // privatekey
null, // certChain
{
checkServerIdentity: function(host, info) {
console.log('verify?', host, info);
if (
host.startsWith('127.0.0.1') ||
host.startsWith('logs.example.com')
) {
return true;
}
console.log('verify other?', host);
return true;
},
},
);
// sslCreds.options.checkServerIdentity = checkCert;
const gLogClient = new synagieLogGrpc.LoggerClient(
'host:port',
sslCreds,
);
但是当我调用时,我的验证 checkServerIdentity 没有调用。
有人知道吗?
检查多个 github 问题并测试 2 天后, 下面的代码有效。 关键是,实际 host:port 是目的地,可能是本地主机。但我们需要用实际生成的 ssl 域覆盖 ssl 目标名称。
tls 生成示例: https://github.com/grpc/grpc-node/issues/1451
const host = 'localhost';
const port = 8088;;
const hostPort = `${host}:${port}`;
const gLogClient = new synagieLogGrpc.LoggerClient(hostPort, sslCreds, {
'grpc.ssl_target_name_override': 'actual_tlsdomain.example.com',
});