在Golang中使用TLS/SSL证书进行gRPC客户端和服务器通信

218 阅读1分钟

就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

参考资料