我正在尝试将grpc-c++客户端连接到grpc-c++服务器。我已经有一个grpc客户端连接到正在工作的TLS,因此服务器应该能够正常运行。
然而,在grpc内部,当构建一个名为“overrideAuthority”的通道时,有一种方法。从文档中可以看出
“覆盖与TLS和HTTP虚拟主机一起使用的权限。它不会更改主机实际连接到的主机。通常是以主机:端口的形式。”
我试图为c++客户端找到类似的东西。但是,到目前为止,我发现的只是grpc::ClientContext上的一个名为set_authority()的函数,以及与grpc_channel_args一起使用的两个选项,即GRPC_ARG_DEFAULT_AUTHORITY和GRPC_SSL_TARGET_NAME_OVERRIDE_ARG。
这些似乎对当局没有任何影响。服务器将始终拒绝带有错误的连接。
没有找到服务器名称匹配: 0.0.0.0。
我知道我可以将它添加到证书上的通用名称中(如果需要的话,我会这样做)。但是,如果可能的话,我希望遵循与grpc客户机相同的模式。
发布于 2022-06-09 19:02:07
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG是正确的渠道arg。请看一下https://github.com/grpc/grpc/blob/470a3066c74abc7c2a0a2cab3b35000b27b51af1/test/core/end2end/fixtures/h2_ssl.cc#L133 https://github.com/grpc/grpc/blob/470a3066c74abc7c2a0a2cab3b35000b27b51af1/test/cpp/end2end/xds/xds_end2end_test.cc#L1348的一些测试
此外,如果我没记错的话,这个日志只是一个警告,不会导致断开连接。请收集更详细的日志,https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md。这可能会给出更多关于这里发生的事情的提示。
https://stackoverflow.com/questions/72382618
复制相似问题