Node GRPC-SSL 配置API 记录

express cyanprobe 6年前 (2018-11-15) 4794次浏览 已收录 0个评论

前言:

最近grpc有点火,正好项目用到rpc调用,记录一下。

grpc.ServerCredentials.createSsl 这个API有多不稳定,短短一年各种写法横空出世。在最新的版本中是这样写的…浪费了一下午时间查文档,而且文档还停留在…

https://grpc.io/grpc/node/grpc.ServerCredentials.html

// Server 改成这样真够奇葩的
var server = new grpc.Server();
server.addService(hello_proto.Greeter.service, { sayHello: sayHello });
let credentials = grpc.ServerCredentials.createSsl(
 fs.readFileSync(__dirname + '/keys/ca.crt'), [{
  cert_chain: fs.readFileSync(__dirname + '/keys/server.crt'),
  private_key: fs.readFileSync(__dirname + '/keys/server.key')
 }], true);
server.bind('0.0.0.0:2333',credentials)
server.start();

// 一定保证XXX 证书 commonName 一致 否则会验证失败
var client = new hello_proto.Greeter('127.0.0.1:2333',
 grpc.credentials
  .createSsl(
   fs.readFileSync(__dirname + '/keys/ca.crt'),
   fs.readFileSync(__dirname + '/keys/client.key'),
   fs.readFileSync(__dirname + '/keys/client.crt'),
  ), { "grpc.ssl_target_name_override": "XXX", "grpc.default_authority": "XXX" }
);

关于双向SSL配置的

使用openssl生成CA证书(根证书、server证书、client证书)

证书配置:
https://www.cnblogs.com/wanderwei/p/7493175.html
看了配置过程就大概知道如何配置了。
grpc模块 关于服务负载方法, 以及服务加载方式等可以写个小轮子了。API真的很不人性化, grpc底层C来实现协议封包解包效率很高,项目组还实现了node版本的client库,不建议使用,效率是一定不如grpc-node-core的
 
其他 —  一个 redis 实现分布式锁的redlock方案:
http://ifeve.com/redis-lock/


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Node GRPC-SSL 配置API 记录
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址