grpc
https://blog.csdn.net/weixin_34365417/article/details/88714357
-
c, err := credentials.NewServerTLSFromFile("../../conf/server.pem", "../../conf/server.key")
-
if err != nil {
-
log.Fatalf("credentials.NewServerTLSFromFile err: %v", err)
-
}
-
-
server := grpc.NewServer(grpc.Creds(c))
-
pb.RegisterSearchServiceServer(server, &SearchService{})
server:
-
func main() {
-
c, err := credentials.NewClientTLSFromFile("../../conf/server.pem", "go-grpc-example")
-
if err != nil {
-
log.Fatalf("credentials.NewClientTLSFromFile err: %v", err)
-
}
-
-
conn, err := grpc.Dial(":"+PORT, grpc.WithTransportCredentials(c))
-
if err != nil {
-
log.Fatalf("grpc.Dial err: %v", err)
-
}
-
defer conn.Close()
-
-
client := pb.NewSearchServiceClient(conn)
-
resp, err := client.Search(context.Background(), &pb.SearchRequest{
-
Request: "gRPC",
-
})
-
if err != nil {
-
log.Fatalf("client.Search err: %v", err)
-
}
-
-
log.Printf("resp: %s", resp.GetResponse())
-
}
ca :
https://segmentfault.com/a/1190000016601810
server:
func main() {
cert, err := tls.LoadX509KeyPair("../../conf/server/server.pem", "../../conf/server/server.key")
if err != nil {
log.Fatalf("tls.LoadX509KeyPair err: %v", err)
}
certPool := x509.NewCertPool()
ca, err := ioutil.ReadFile("../../conf/ca.pem")
if err != nil {
log.Fatalf("ioutil.ReadFile err: %v", err)
}
if ok := certPool.AppendCertsFromPEM(ca); !ok {
log.Fatalf("certPool.AppendCertsFromPEM err")
}
c := credentials.NewTLS(&tls.Config{
Certificates: []tls.Certificate{cert},
ClientAuth: tls.RequireAndVerifyClientCert,
ClientCAs: certPool,
})
server := grpc.NewServer(grpc.Creds(c))
pb.RegisterSearchServiceServer(server, &SearchService{})
lis, err := net.Listen("tcp", ":"+PORT)
if err != nil {
log.Fatalf("net.Listen err: %v", err)
}
server.Serve(lis)
}
client:
func main() {
cert, err := tls.LoadX509KeyPair("../../conf/client/client.pem", "../../conf/client/client.key")
if err != nil {
log.Fatalf("tls.LoadX509KeyPair err: %v", err)
}
certPool := x509.NewCertPool()
ca, err := ioutil.ReadFile("../../conf/ca.pem")
if err != nil {
log.Fatalf("ioutil.ReadFile err: %v", err)
}
if ok := certPool.AppendCertsFromPEM(ca); !ok {
log.Fatalf("certPool.AppendCertsFromPEM err")
}
c := credentials.NewTLS(&tls.Config{
Certificates: []tls.Certificate{cert},
ServerName: "go-grpc-example",
RootCAs: certPool,
})
conn, err := grpc.Dial(":"+PORT, grpc.WithTransportCredentials(c))
if err != nil {
log.Fatalf("grpc.Dial err: %v", err)
}
defer conn.Close()
client := pb.NewSearchServiceClient(conn)
resp, err := client.Search(context.Background(), &pb.SearchRequest{
Request: "gRPC",
})
if err != nil {
log.Fatalf("client.Search err: %v", err)
}
log.Printf("resp: %s", resp.GetResponse())
}
c := credentials.NewTLS(&tls.Config{
Certificates: []tls.Certificate{cert},
ServerName: "go-grpc-example",
RootCAs: certPool,
})
conn, err := grpc.Dial(":"+PORT, grpc.WithTransportCredentials(c))

浙公网安备 33010602011771号