ssl - 为什么 grpc 服务器示例使用 net.Listen 而不是 tls.Listen

标签 ssl go grpc

<分区>

我正在设置一个将使用 TLS 进行客户端授权/身份验证的 golang grpc 服务器。我见过的所有服务器设置示例都使用 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,还是它们没有什么区别?”

最佳答案

Why is this?

因为这些是关于 grpc 而不是 TLS 的例子? 例子往往是例子:为了证明某事而进行的简化。示例不是生产代码的复制粘贴示例。

关于ssl - 为什么 grpc 服务器示例使用 net.Listen 而不是 tls.Listen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988816/

相关文章:

ssl - 为什么 SSL 架构有两个截然不同的功能?

android - 在 OPENSSL 中,在 SSL_Connect() 我得到 SSL_ERROR_WANT_READ

go - 可变浮点精度格式字符串

go - 从名称中获取 reflect.Type

go - 两种不同语言之间的 Protocol Buffer

带 SSL 的 Qt QNetworkAccessManager

google-chrome - 使用 SSL bump 时无法连接到真实站点 ssl 错误

使用包含 slice 的结构时 xml 恶作剧?

c++ - 如何使用 C/C++ 通过 gRPC 发送字节数据?

c++ - Go context.Background() 的 gRPC++ 等价物是什么?