Golang gRPC配置TLS遇"grpc: no transport security set"错误排查
问题:gRPC TLS配置未生效,客户端提示无安全传输设置
我正在Golang服务器中实现密码哈希加盐功能,完成后开始研究TLS配置。因为使用gRPC,所以参照官方文档添加TLS配置代码,但未生效。
为生成.cert和.key文件,我遵循了相关教程,编写了以下代码:
服务端代码
certFile, certFileErr := os.ReadFile("server.crt") if certFileErr != nil { log.Fatalf("Failed to read cert file: %v", certFileErr) } keyFile, keyFileErr := os.ReadFile("server.key") if keyFileErr != nil { log.Fatalf("Failed to read key file: %v", keyFileErr) } creds, _ := credentials.NewServerTLSFromFile(string(certFile), string(keyFile)) mServ := grpc.NewServer(grpc.Creds(creds)) lis, err := net.Listen("tcp", "localhost:50051")
客户端代码
certFile, certFileErr := os.ReadFile("server.crt") if certFileErr != nil { log.Fatalf("Failed to read cert file: %v", certFileErr) } creds, _ := credentials.NewClientTLSFromFile(string(certFile), "") conn, err := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds)) if err != nil { log.Fatalf("did not connect: %v", err) }
我不确定如何向gRPC传递文件引用,所以用了常规文件读取方式。服务端运行正常,但客户端报错:
grpc: no transport security set (use
grpc.WithTransportCredentials(insecure.NewCredentials()) explicitly or
set credentials)
这让我困惑,明明配置了安全连接却被提示未设置。这是我第一次实现登录安全机制,不清楚常规流程。
更新:经日志排查,发现代码无法找到.cert文件,尽管路径是IDE自动提示的。
内容的提问来源于stack exchange,提问作者rminaj
相关产品推荐
相关产品推荐

