【问题标题】:Why do grpc server examples use net.Listen instead of tls.Listen [closed]为什么 grpc 服务器示例使用 net.Listen 而不是 tls.Listen [关闭]
【发布时间】:2018-02-09 20:16:09
【问题描述】:

我正在设置一个 golang grpc 服务器,它将使用 TLS 进行客户端授权/身份验证。我见过的所有服务器设置示例都使用net.Listen() 而不是tls.Listen()。这是为什么呢?

import (
    "crypto/tls"
    "github.com/pkg/errors"
    "google.golang.org/grpc"
    "google.golang.org/grpc/credentials"
    "net"
)

func startGRPCListener(hostport string, tlsconfig *tls.Config) (grpcServer *grpc.Server) {
    listener, _ = net.Listen("tcp", hostport)
    cred := grpc.Creds(credentials.NewTLS(tlsconfig))
    grpcServer := grpc.NewServer(cred)
    go func() {
        serveErr := grpcServer.Serve(listener)
        log.WithError(serveErr).Info("GRPC server exited")
    }() 

    return
}

我在几个工作示例中注意到,如果我切换到 tls.Listen,则无法再建立连接。但是,在其他情况下,这不会导致问题!

我想我的问题是“我应该使用 net.Listen 还是 tls.Listen,还是没有区别?”

【问题讨论】:

  • 为什么一个例子做一件事或另一件事的问题是特定于那个例子的,只有例子的作者才能真正回答,而且通常完全不相关。也许如果您发布有关您的 TLS 问题的问题,那么 SO 社区实际上可以提供帮助。

标签: ssl go grpc


【解决方案1】:

这是为什么?

因为这些是关于 grpc 而不是关于 TLS 的示例? 示例往往是示例:简化以演示某些内容。示例不是生产代码的复制粘贴示例。

【讨论】:

  • 正是这个。 TLS 版本不是一个示例,有人可以通过复制粘贴执行来了解它是如何工作的——他们必须设置证书才能使其工作,并且就 gRPC 功能而言,它不会为示例添加任何内容实际上是在试图展示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 2015-06-25
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多