我正在设置一个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,还是没有区别?”
答案 0 :(得分:3)
为什么会这样?
因为这些是关于grpc而不是关于TLS的例子吗? 示例往往是示例:简化以演示某些内容。示例不是生产代码的复制粘贴样本。