关于grpc-node的ssl,还有egg-grpc的问题
发布于 6 年前 作者 HobaiRiku 3721 次浏览 来自 问答

其实可能主要是我对ssl证书不熟悉的问题,想请教各位大神ssl证书到底有什么,阿里云盾申请的那些都什么意思。 目前一个应用,已经确定使用egg来做,而且需要用grpc去访问一个服务器,这个服务器是用go的grpc+grpc-gateway直接做的RESTful和grpc一体的一个服务,启用了ssl,证书是阿里云免费1年的那种: Snipaste_2018-08-31_21-41-34.png 所以使用grpc的时候就要创建ssl的rpc,在官方上看到: Snipaste_2018-08-31_21-26-51.png 不是很理解这个root_certs是什么,也看了源码声明,除了这个可以选,还可以有客户端的privateKey、certChain、以及一个verifyOptions的回调,但是也不清楚该怎么弄,我拿阿里云下载的几个key那些似乎都没能正常发出请求,如何获取这些东西呢? 另外就是因为egg有grpc的插件,但是这个插件似乎还没有把创建ssl的方式提供给客户,还是目前已经有方法使用egg-grpc创建ssl连接? Snipaste_2018-08-31_21-33-17.png 查了一些资料还是不太清晰,求助各位。 --------------------2018-09-03更新: 经过了一些学习再测试得出一下几个点:

  1. grpc在ssl模式下似乎并不支持直接ip连接,反正只要连接中是127.0.0.1什么的,都会连接失败(这个也是之前一直无法创建连接的原因),通过grpc-gateway包装出来的restful可以ssl+ip访问;
  2. grpc-node ssl连接的参数的确是可选的,虽然学习了一些,但是还是没完全弄懂;
  3. grpc连接和连接grpc-gateway创建的restful速度基本相同; 所以,目前项目的设计上,感觉如果要使用127.0.0.1这样架构和配置,好像直接使用restful来的方便;
2 回复

客户端的 privatekey, certChain, 分别是客户端的 私钥, 证书(也就是公钥), 应该可以不写, private key可以程序生成, public key 根据 private key 生成, 自己用 openssl 命令跑一遍就可以 客户端 root cert, 应该就是 server 端使用的自签名证书, 需要在客户端指定这个为, 或者安装到系统 ca 中. 所以我看 client 端的这三个参数都是可选的 https://grpc.io/grpc/node/grpc.credentials.html#.createSsl__anchor

Links

@magicdawn 感谢指点和学习推荐 经过了一些学习再测试得出一下几个点:

  1. grpc在ssl模式下似乎并不支持直接ip连接,反正只要连接中是127.0.0.1什么的,都会连接失败(这个也是之前一直无法创建连接的原因),通过grpc-gateway包装出来的restful可以ssl+ip访问;
  2. grpc-node ssl连接的参数的确是可选的,虽然学习了一些,但是还是没完全弄懂;
  3. grpc连接和连接grpc-gateway创建的restful速度基本相同; 所以,目前项目的设计上,感觉如果要使用127.0.0.1这样架构和配置,好像直接使用restful来的方便;
回到顶部