小白wyf 2022-01-27 16:25 采纳率: 0%
浏览 5
已结题

grpc ssl/tls 服务器端添加了证书并监听端口,客户端创建不加密通道,最后为什么客户端还能连接上服务器?

grpc ssl/tls 服务器端添加了证书并监听端口,客户端创建不加密通道,最后为什么客户端还能连接上服务器?

服务器代码:

std::string server_address ( "0.0.0.0:50051" );

    std::string key;
    std::string cert;
    std::string root;

    read ( "E:\\DataCert\\server1.pem", cert );
    read ( "E:\\DataCert\\server1.key", key );
    read ( "E:\\DataCert\\ca.pem", root );

     grpc::SslServerCredentialsOptions::PemKeyCertPair keycert = { key, cert };
     grpc::SslServerCredentialsOptions sslOps(GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY);
     sslOps.force_client_auth = true;
     sslOps.pem_root_certs = root;
     sslOps.pem_key_cert_pairs.push_back ( keycert );
     std::shared_ptr<grpc::ServerCredentials> creds = grpc::SslServerCredentials(sslOps);

    ServerBuilder builder;
    builder.AddListeningPort(server_address, creds);

    GreeterServiceImpl service;
    builder.RegisterService(&service);

    std::unique_ptr < Server > server ( builder.BuildAndStart () );
    std::cout << "Server listening on " << server_address << std::endl;

    server->Wait ();

客户端代码:
std::string server{ "192.168.20.182:50051" };
//    std::unique_ptr<Greeter::Stub> stub_ = Greeter::NewStub(grpc::CreateChannel(server, grpc::SslCredentials(opts)));
    std::unique_ptr<Greeter::Stub> stub_ = Greeter::NewStub(grpc::CreateChannel(server, grpc::InsecureChannelCredentials()));

    std::string user ( "world" );
    HelloRequest request;
    request.set_name(user);
    HelloReply reply;
    ClientContext context;
    Status status = stub_->SayHello(&context, request, &reply);

    if (status.ok())
    {
        std::cout << "Greeter received: " << reply.message() << std::endl;
    }
    else
    {
        std::cout << status.error_code() << ": "
            << status.error_message() << std::endl;
    }

结果客户端调用接口,返回了ok。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 2月4日
    • 修改了问题 1月27日
    • 创建了问题 1月27日

    悬赏问题

    • ¥20 思科:Router c3600 MN-4E插槽
    • ¥15 16进制修改视频的元数据
    • ¥15 岛津txt格式文件转nirs格式
    • ¥15 石墨烯磁表面等离子体
    • ¥15 angular 项目无法启动
    • ¥15 安装wampserver,图标绿色,但是无法进入软件
    • ¥15 C++ MFC 标准库 加密解密解惑
    • ¥15 两条数据合并成一条数据
    • ¥15 Ubuntu虚拟机设置
    • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项