【问题标题】:How to generate TLS certificate bound gRPC server with protoc如何使用 protoc 生成 TLS 证书绑定 gRPC 服务器
【发布时间】:2020-06-23 18:42:44
【问题描述】:

使用 protoc,在我的例子中,在 golang 中,生成的服务器文件没有绑定到我创建的 TLS 证书和密钥。事实上,我不得不使用这种方法来实例化 grpc 服务器:

creds, _ := credentials.NewServerTLSFromFile("server.crt", "server.key")
s := grpc.NewServer(grpc.Creds(creds))
s.Serve(listener)

因为这段代码不是生成的,所以我需要使用上面的来注册我的服务描述符和处理程序:

s.RegisterService(&_My_serviceDesc, &handler.MailServer{})

原始生成的_My_serviceDesc 变量在生成的包中,因此无法从我的主包中访问,因此我必须在启动上面服务器的 mythemain 包中定义它。此外,这个相同的变量引用了一个用下划线 _My_Handler 定义的处理程序,我还必须在主包中重新定义它。

我查看了protoc 文档和帮助,否则似乎没有办法做到这一点。我想知道为什么不能将它与我需要的证书相关联。这看起来很奇怪......

【问题讨论】:

    标签: grpc-go


    【解决方案1】:

    TLS 配置在 gRPC 服务器上完成(调用 grpc.NewServer 时)。 您可以照常在创建的服务器上注册服务。

    在此处查看 TLS 示例:https://github.com/grpc/grpc-go/tree/master/examples/features/encryption

    【讨论】:

    • 我的观点是,协议代码生成器很少或根本不努力生成可以轻松应用于特定证书的服务器代码。默认情况下,它在根证书上运行,附加选项需要大量修改生成的服务器代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2019-10-08
    • 2021-11-11
    • 2022-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多