grpc TLS証明書の検証

まず、ダウンロードの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(); 
}

 

おすすめ

転載: www.cnblogs.com/fanxp/p/11415455.html