まず、ダウンロードのopenssl
https://oomake.com/download/openssl このリンクは(私はここに持つことができますインストールファイルのexeファイルをダウンロードするための直接的なウィンドウです)、さまざまな基本的なプラットフォームを持っています
ダウンロードはどこでも使用することができます完了した後、環境変数に関する研修のインストールディレクトリを検索
第二に、証明書を生成します
OpenSSLのgenrsa -out server.keyの2048 のOpenSSL REQ -new -x509 -sha256 -key server.keyのアウトをserver.crt -days 36500 -subj / C = CN / ST = CQ / L = fanxp / O = CQ / OU = bx/CN=go-grpc-test/[email protected]
2つのファイルを生成しますときserver.keyの行く-grpcテストは、サーバー名をserver.crtとしてテストする必要があります
第三に、証明書を設定
サーバーを行きます
メインFUNC(){ LIS、ERR: = net.Listen( "TCP" 、PORT) であれば!誤る= nilの{ log.Fatalfは(: "体積%聞くことができなかった" 、ERR) } // TLS认证 credsをし、ERR: = credentials.NewServerTLSFromFile( "CONF /をserver.crt"、 "CONF / server.keyの" ) であれば、ERR =!ゼロ{ grpclog.Fatalfは( "クレデンシャル%vを生成できませんでした" ERR) } S: = grpc.NewServer( grpc.Creds(credsを)) pb.RegisterGreeterServer(S、 &サーバー{}) log.Println( "RPC服务已经开启") s.Serve(LIS) }
ここだけ(コードがテストをダウンロードして無料、ブログの記事に基づいています)メインのコードを示してい
クライアントを行きます
(){メインFUNC :credsを、ERR = credentials.NewClientTLSFromFile( "confに/をserver.crt"、 "ゴーgrpcを試験" ) の場合誤る=!nilの{ パニック(fmt.Errorf(「TLS証明書を読み込むことができませんでした:% S」、ERR)) } CONN、ERR: = grpc.Dial(アドレス、grpc.WithTransportCredentials(credsを)) であれば!誤る= nilの{ log.Fatalfは( "接続できませんでした:%のV" 、ERR) } 延期CONN。クローズ() C: = pb.NewGreeterClient(CONN) 名 = "LIN" 場合(os.Args)でlen> 1 { 名前= os.Args [1 ] } R、ERR: = c.SayHello(context.Background()、&pb.HelloRequest {名:名}) であれば!ERR = ゼロ{ log.Fatalfは(「挨拶ができませんでした:%vを」、ERR) } log.Println(r.Message) }
C#クライアント
静的 ボイドメイン(文字列[]引数) { VARの cacert = File.ReadAllText(" CONF /をserver.crt " )。 VaRの SSL = 新しいSslCredentials(cacert)。 VaRの channOptions = 新しいリスト<ChannelOption> { 新しい ChannelOption(ChannelOptions.SslTargetNameOverride、" ゴーgrpc検定を" ) }。 チャンネルチャンネル = 新しいチャンネル(" 127.0.0.1:50001 " 、SSL、channOptions)。 VaRのクライアント= 新しいですGreeter.GreeterClient(チャンネル)。 VaRの応答= client.SayHello(新しい HelloRequest {NAME = " LIN " })。 Console.WriteLineを(" 来自" + reply.Message)。 channel.ShutdownAsync()(WAIT)。 Console.WriteLineを(" 任意键退出... " ); Console.ReadKey(); }