当前位置: 首页 > 知识库问答 >
问题:

#grpc节点客户端允许签名证书

滕成双
2023-03-14

我在服务器上有一个自签名的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没有调用。

有人有线索吗?

共有1个答案

汪飞捷
2023-03-14

在检查了多个github问题并测试了2天之后,下面的代码可以正常工作。关键点是,实际主机:端口是目标,可以是localhost。但我们需要用实际生成的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',
});
 类似资料:
  • 我试图验证客户端从私钥生成并发送到服务器的签名。 我能在库中找到的唯一一个听起来合适的验证器是。如果这门课做得不对,请纠正我。 我目前有: 有人知道mina是否支持签名验证吗?如果支持,如何实施? 我的理解是,我首先必须向服务器分配/添加用户公钥。如果客户提供了file,如何将此文件作为公钥添加到服务器?

  • 当我尝试使用node js创建grpc客户端调用时,我遇到了一个问题。当我在proto文件中使用“google/api/annotations.proto”时,我得到一个错误。如果我删除它,它会工作文件。我可以知道我从我的客户那里错过了什么吗。js公司 错误:无法解析的扩展:“扩展google”。protobuf。中的MethodOptions。谷歌。根目录下的api。resolveAll(src

  • 当客户端请求访问它所控制的,或者事先与授权服务器协商(所采用的方法超出了本规范的范围)的其他资源所有者的受保护资源,客户端可以只使用它的客户端凭据(或者其他受支持的身份验证方法)请求访问令牌。 客户端凭据许可类型必须只能由机密客户端使用。 +---------+ +---------------+ | |

  • 问题内容: 我正在尝试确保通过Internet进行通信的Java客户端/服务器应用程序的连接安全。我的想法是将SSL套接字与自签名证书和客户端身份验证一起使用。我做了以下事情: 服务器:包含新的自签名证书的密钥库。 客户端:包含新的自签名证书的密钥库。 服务器:包含导出的客户端证书的信任库(来自上面的项目符号)。导出客户端证书并将其导入服务器的信任库 客户端:包含导出的服务器证书的信任库(从第一个

  • 我有一个Java服务器应用程序,它通过TLS从GRPC客户端获取数据并在服务器上处理。现在我想使用多个客户端。要向客户端分配接收到的事件,我想读取客户端证书并使用证书的DN分配事件。如何获取客户端证书? 我发现这个构建服务器:https://github.com/grpc/grpc-java/blob/master/SECURITY.md#mutual-tls 然后你应该实现一个服务器拦截器 }