就gRPC而言,客户端和服务器的通信是通过HTTP/2进行的。传输的信息是二进制数据,但通信是以明文形式进行的。在这个例子中,我们将引入额外的安全性,用TLS/SSL加密信息。
首先,你需要创建服务器的SSL证书。
$ openssl genrsa -out private.key 4096
$ openssl req -new -x509 -sha256 -days 1825 -key private.key -out public.crt
结构
当你建立一个gRPC应用程序时,你首先要创建一个*.proto 文件并进行编译,然后开始开发你的应用程序。
├── Makefile
文件
编译文件
.PHONY: compile
credit.proto
syntax = "proto3";
credit.pb.go
我不在这里添加内容,因为它是用下面的命令生成的。
client/main.go
package main
server/main.go
package main
测试
$ make server
$ make client
当你运行上面的客户端代码时,服务器也会输出下面的信息。
2020/04/04 18:07:42 Request: 1990.01
如果你操作public.crt ,客户端将输出以下信息。
2020/04/04 22:53:47 credentials: failed to append certificates